стиль «шагов» gnuplot не принимает переменный цвет

#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. Это не обходной путь, а скорее лучшее решение моей проблемы, чем шаги, поскольку он позволяет изменять цвет вертикальных линий, которые мне нужны!