#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"