#gnuplot
#gnuplot
Вопрос:
Я использую Gnuplot версии 5.2 patchlevel 6 на Debian 10. Следующая программа
$d << EOD
1 0.5 0.1
2 0.75 0.2
3 0.99 0.5
4 1.25 1.1
EOD
plot $d using 1:2:3 w lines lc palette z lw 2
выдает ожидаемый результат:
Но если я изменю последнюю строку на
plot $d using 1:2:3 w steps lc palette z lw 2
Я получаю сообщение об ошибке:
line 7: Too many using specs for this style
В соответствии с параграфами II Стили построения, шаги в Руководстве пользователя Gnuplot
Требования к столбцу ввода такие же, как и для стилей построения линий и точек.
и в параграфе II Стили построения строк указано, что:
Базовая форма требует 1, 2 или 3 столбца входных данных. Дополнительные входные столбцы могут использоваться для предоставления информации, такой как переменный цвет строки
Что я делаю не так?
Ответ №1:
Если вы рисуете with steps
, вероятно, возникает вопрос: какой цвет должны иметь вертикальные линии? Быстро проверив документацию, я не смог найти подсказки, работает ли переменный цвет строки вместе with steps
явно или явно не работает.
В любом случае, вы можете обойти это с помощью следующего кода:
Код:
### plotting with steps and variable line color
reset session
$Data <<EOD
1 0.5 0.1
2 0.75 0.2
3 0.99 0.5
4 1.25 1.1
EOD
set xrange [0:5]
set yrange [0:1.5]
plot x1=y1=NaN $Data u (x0=x1,x1=$1,x0):(y0=y1,y1=$2,y0):(x1-x0):(0):3 w vectors lw 2 lc palette nohead notitle,
x1=y1=NaN $Data u (x0=x1,x1=$1,x1):(y0=y1,y1=$2,y0):(0):(y1-y0):3 w vectors lw 2 lc palette nohead notitle
### end of code
Результат:
Добавление: (вертикальные линии с переменными цветами)
Возможно, вы заметили, что с вашими 4 точками данных всего 3 цвета. Это очевидно, потому что, если у вас есть 4 точки данных, у вас будет только 3 соединительные линии, следовательно, 3 цвета.
Вариант может быть следующим: нарисуйте свои 4 точки цветом в соответствии со значением столбца 3 и тем же цветом для горизонтальных линий. Однако для вертикальных линий вы разбиваете линии на столько уровней, сколько хотите (здесь : myLevels = 20
), используя цвет в соответствии с палитрой.
Код:
### plotting with steps and variable line color (vertical lines with variable color)
reset session
$Data <<EOD
1 0.5 0.1
2 0.75 0.2
3 0.99 0.5
4 1.25 1.1
EOD
set xrange [0:5]
set yrange [0:1.5]
myLevels = 20
plot x1=y1=c1=NaN $Data u (x0=x1,x1=$1,x0):(y0=y1,y1=$2,y0):(x1-x0):(0):(c0=c1,c1=$3,c0) w vectors lw 2 lc palette nohead notitle,
for [i=0:myLevels-1] x1=y1=NaN $Data u (x0=x1,x1=$1,x1):(y0=y1,y1=$2,y0 (y1-y0)*i/myLevels):(0):((y1-y0)/myLevels):(c0=c1,c1=$3,c0 (c1-c0)*i/myLevels) w vectors lw 2 lc palette nohead notitle,
$Data u 1:2:3 w p pt 7 ps 2 lc palette notitle
### end of code
Результат:
Комментарии:
1. Это не обходной путь, а скорее лучшее решение моей проблемы, чем шаги, поскольку он позволяет изменять цвет вертикальных линий, которые мне нужны!