Gnuplot: «Дополнительные» пунктирные линии - PullRequest
2 голосов
/ 06 мая 2019

Я хотел бы построить «дополнительные» пунктирные линии. Я имею в виду следующее: у меня есть три кривые, которые идентичны в определенном диапазоне значений x, но отличаются вне этого диапазона. Конечно, если я просто нанесу сплошные линии друг на друга, я увижу только самую верхнюю (в диапазоне, где они идентичны). Итак, я хотел бы представить их в виде пунктирных линий:

1st line: dash-space-space-dash-space-space...

2nd line: space-dash-space-space-dash-space...

3rd line: space-space-dash-space-space-dash...

При нанесении их друг на друга должны получиться сплошные линии с чередующимися цветами (из трех типов линий). Наиболее очевидный способ добиться этого - с помощью новых dashtypes, например:

plot x dt "-  ",x dt " - ",x dt "  -"

Однако начальный пробел игнорируется. Кроме того, определение, такое как (20, 20), не работает, потому что порядок значений всегда «сплошная длина, длина в пустом пространстве». Если бы был способ инвертировать этот порядок, проблему можно было бы легко решить.

(Кстати, в случае только двух кривых решение простое: нарисуйте первое как сплошное, а второе как пунктирное.)

Есть идеи?

1 Ответ

2 голосов
/ 06 мая 2019

Вы, вероятно, ищете что-то вроде этого:

### different shifted dashed lines
reset session

plot x, \
    0 w l lw 3 lc rgb "red" dt (20,40) notitle, \
    0 w l lw 3 lc rgb "web-green" dt (0,20,20,20) notitle, \
    0 w l lw 3 lc rgb "blue" dt (0,40,20,0) notitle

### end of code

enter image description here

Добавление:

с помощью следующего кода результат должен быть одинаковым (или, скажем, похожим) в wxt, qt, postscript, pngcairo (не может проверить x11).Ну, длина тире зависит от терминала (см. https://stackoverflow.com/a/55628295/7295599)

### different shifted dashed lines
reset session
# set term wxt
# set term qt
set term pngcairo
set output "DashedLines.png"
# set term postscript color
# set output "DashedLines.eps"

plot x, \
    0 w l lw 3 lc rgb "blue" dt 1 notitle, \
    0 w l lw 3 lc rgb "web-green" dt (40,20) notitle, \
    0 w l lw 3 lc rgb "red" dt (20,40) notitle
set output
### end of code
...