gnuplot: как задать несколько диапазонов в параметрических графиках? - PullRequest
0 голосов
/ 21 октября 2019

Может кто-нибудь объяснить, почему вторая кривая - это не просто ожидаемая линия от 0,0 до 1,1, а линия от 0,0 до 2*pi,2*pi? Почему второй диапазон [t=0:1] игнорируется? Ошибка или функция или я что-то упустил в руководстве?

Код:

### parametric curves
reset session

set parametric
set size square

plot [0:2*pi] cos(t), sin(t) w l, \
     [t=0:1] t, t w l
### end of code

Результат:

enter image description here

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Использование диапазонов осей в начале команды заговора является историческим артефактом. Это сбивает с толку как программу, так и пользователя, и, поскольку введение версий выборки в версии 5 приводит к потенциально неоднозначному синтаксису. Чтобы устранить неоднозначность синтаксиса, вы можете поместить ключевое слово sample перед указателем диапазона для первого компонента графика:

set style data linespoints
set key left
plot sample [14:22:2] '+' u 1:1 pt "1" ti "sub-plot 1 sample interval 2", \
            [1:12:1]  '+' u 1:1 pt "2" ti "sub-plot 2 sample interval 1", \
            [33:66:6] '+' u 1:1 pt "3" ti "sub-plot 3 sample interval 6"

enter image description here

0 голосов
/ 23 октября 2019

Позвольте мне обобщить мои уроки, я немного запутался в диапазонах, выборках и параметрических параметрах.

То, чего я хотел достичь, это следующее:

3 кривых с разными диапазонами и разнымисэмплы одной сюжетной командой. Например, для иллюстрации:

  • Случайный : 1000 случайных точек в диапазоне [0: 2] [0: 2]
  • Круг : Круг с радиусом 1 и 24 точками в диапазоне [-1: 1] [- 1: 1]
  • Линия : Прямая линия с 3 выборками в диапазоне [-0,5:0.5] [- 0.5: 0.5]

Изучения:

  1. , если parametric выключено, это не позволяет (выдает ошибку) указать [start:end:step]в первой команде заговора, тогда как это допускается во второй и третьей (под) команде заговора. Странно.
  2. , если parametric включено, step в первой команде построения будет проигнорировано, а количество выборок будет определено предыдущим set samples. Не так очевидно.
  3. если parametric выключено, я не могу достичь желаемого результата.
  4. Мне нужно использовать set parametric вместе с [start:end:step] '+' u ...

Короче говоря. Я могу добиться желаемых результатов, когда кодирую что-то вроде:

set parametric
set samples samples1   # because step1 will be ignored
plot [start1:end1:step1] '+' u (<whatever>):(<whatever>) ti "sub-plot 1", \
     [start2:end2:step2] '+' u (<whatever>):(<whatever>) ti "sub-plot 2", \
     [start3:end3:step3] '+' u (<whatever>):(<whatever>) ti "sub-plot 3"

На приведенном ниже коде и графике показаны различные варианты с / без parametric и разный порядок 3 кривых. Только нижний ряд на графике ниже показывает желаемые результаты.

Код:

 ### curves with different ranges & samples within one plot command
reset session
set colorsequence classic

Random      = "[0:1:0.001]    '+' u (2*rand(0)):(2*rand(0)) w p pt 7 ps 0.5 not"
RandomFirst = "[0:1]          '+' u (2*rand(0)):(2*rand(0)) w p pt 7 ps 0.5 not"
Circle      = "[0:2*pi:pi/12] '+' u (cos($1)):(sin($1)) w lp pt 7 not"
CircleFirst = "[0:2*pi]       '+' u (cos($1)):(sin($1)) w lp pt 7 not"
Line        = "[-0.5:0.5:0.5] '+' u 1:1 w lp pt 7 lw 2 not"
LineFirst   = "[-0.5:0.5]     '+' u 1:1 w lp pt 7 lw 2 not"

set multiplot layout 4,3 columnsfirst

    set label 1 "random/circle/line" at screen 0.166,0.99 center
    unset parametric
        set title "parametric OFF"
        plot @RandomFirst, @Circle, @Line
    set parametric
        set title "parametric ON"
        plot @Random, @Circle, @Line
    unset parametric
    set samples 1000
        set title "parametric OFF"
        plot @RandomFirst, @Circle, @Line
    set parametric
        set title "parametric ON"
        plot @Random, @Circle, @Line

    set label 2 "line/random/circle" at screen 0.5,0.99 center
    unset parametric
        set title "parametric OFF"
        plot @LineFirst, @Random, @Circle
    set parametric
        set title "parametric ON"
        plot @Line, @Random, @Circle
    set samples 3
    unset parametric
        set title "parametric OFF"
        plot @LineFirst, @Random, @Circle
    set parametric
        set title "parametric ON"
        plot @Line, @Random, @Circle


    set label 3 "circle/line/random" at screen 0.833,0.99 center
    unset parametric
        set title "parametric OFF"
        plot @CircleFirst, @Line, @Random, 
    set parametric
        set title "parametric ON"
        plot @Circle, @Line, @Random, 
    set samples 24
    unset parametric
        set title "parametric OFF"
        plot @CircleFirst, @Line, @Random, 
    set parametric
        set title "parametric ON"
        plot @Circle, @Line, @Random, 

    unset multiplot
### end of code

Результат:

enter image description here

...