gnuplot абсолютно не имеет маркировки y вообще и оси x спереди

#gnuplot

#gnuplot

Вопрос:

Я хотел бы создать график цветовой шкалы для одной переменной, которая рисует прямоугольник слева красным цветом, если переменная отрицательная, и зеленым цветом справа, если положительная.

Мне не удается полностью избавиться от оси y. На нем не должно быть никакой маркировки вообще. Во-вторых, ось x и тики скрыты за рамкой. Мне нужно, чтобы это было видно. В-третьих, в построении линии в 0 действительно нет необходимости, поскольку я уже нарисовал все, что мне нужно, но gnuplot хочет использовать командный параметр plot с каким-то аргументом. Я пытался plot 0 lt bgnd , но это оставило уродливую белую линию в моем поле. Думаю, я смогу с этим жить. Стрелки на концах оси x тоже были бы хороши.

Это текущее состояние кода. (переменная v позже будет получена из внешнего мира в качестве аргумента командной строки)

 v= 7.3
if (v<0){boxcolor= 'red'}
if (v>=0){boxcolor= 'green'}

unset border
unset ytics
unset key

set yzeroaxis
set xzeroaxis
set xtics axis
unset ytics 
set xrange [-10:10]

set object 1 rect from 0.0,-0.5 to v,0.5 back fillcolor rgb boxcolor

plot 0 
  

Результат на данный момент:
введите описание изображения здесь

Ответ №1:

Вероятно, вы ищете что-то подобное этому:

Обновление: улучшенная версия

  • используя график и первые координаты для стрелки (проверьте help coordinates ), следовательно, независимо от фактического диапазона x.
  • использование xzeroaxis (проверить help xzeroaxis )

Сценарий:

 ### only x-axis with arrows
reset session

set border 0
unset ytics

v= 7.3
boxcolor = (v<0) ? 'red' : 'green'

set xrange [-10:10]
set xtics axis mirror
set xzeroaxis lt 1 lc "black"

set object 1 rect from 0.0,-0.5 to v,0.5 behind fillcolor rgb boxcolor
set arrow  1 from  graph -0.03, first 0 to graph 1.03, first 0 heads filled

plot cos(x)
### end of script
  

Результат:

введите описание изображения здесь

Ответ №2:

Другой ответ: в этом используются встроенные варианты оси, а не стрелка:

 set border 0
unset key
# In newer gnuplot versions there is a keyword "nodraw"
# Here we define a synonym that works with older versions also
  hide = -4
set yzeroaxis lt hide lc hide
set xzeroaxis lt black
set tics front
unset ytics
set xtics axis
# define rectangle here
  set object 1 rect from 0,-.5 to 5,.5 behind fs noborder fc "green"
#
plot 0 with lines lc "black"
  

введите описание изображения здесь