Я пытаюсь использовать мультиплот для объединения графика и сплота, но метки x, y кажутся смещенными - PullRequest
1 голос
/ 15 февраля 2020
set xrange [-2:2]
set yrange [-2:2]

set xlabel 'X'
set ylabel 'Y'

set samples 300
set isosamples 300


set lmargin screen 0.1
set rmargin screen 0.9
set tmargin screen 0.9
set bmargin screen 0.1

set multiplot

set pm3d map
set palette grey
unset colorbox 
splot x**2+y**2 < 1 ? 0:0.2
unset pm3d

plot sin(x) lc 0

Этот код отображает проблему - различное расположение меток x / y по сплоту, графику.

splot (pm3d map) and plot inside multiplot. x/y labels shifted

Ответы [ 3 ]

0 голосов
/ 16 февраля 2020

Вполне возможно, что вы можете создать свой составной график целиком с помощью splot и, следовательно, не нужно использовать мультиплот, обходя всю проблему. Я понимаю, что пример, который вы приводите, может быть слишком упрощенным, но в его нынешнем виде сюжет может быть создан с помощью

set xrange [-2:2]
set yrange [-2:2]
set trange [-2:2]

set xlabel 'X'
set ylabel 'Y'

set samples 300
set isosamples 300

set view map
set pm3d at b
set palette grey
unset colorbox 

splot x**2+y**2 < 1 ? 0:0.2 with pm3d, \
      '+' using 1:(sin($1)):(0) with lines lc "blue" lw 3

enter image description here

0 голосов
/ 18 февраля 2020

С помощью gnuplot 5.2.8 рисунок можно создать с помощью одной команды plot:

pl [-2:2][-2:2] sample [0:2*pi] "+" us (cos(x)):(sin(x)) with filledcurve, sin(x)

enter image description here

Таким образом splot и multiplot здесь не нужны.

sample необходим для переопределения диапазона параметров (только в случае первого аргумента графика). Документация находится здесь: https://github.com/gnuplot/gnuplot/blob/4a7a11e6b528ea362c943cf632fd21a518b15c54/docs/gnuplot.doc#L7856

PS: Как вы видите, он также работает без $1 для вашего терминала cairolatex.

0 голосов
/ 15 февраля 2020

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

Код:

### remove shifted tics in multiplot
reset session

set xrange [-2:2]
set yrange [-2:2]

set xlabel 'X'
set ylabel 'Y'

set samples 300
set isosamples 300

set lmargin screen 0.1
set rmargin screen 0.9
set tmargin screen 0.9
set bmargin screen 0.15

set multiplot
    set pm3d map
    set palette grey
    unset colorbox 
    splot x**2+y**2 < 1 ? 0:0.2
    unset pm3d

    unset xlabel
    unset ylabel
    unset xtics
    unset ytics

    plot sin(x) lc 0
unset multiplot
### end of code

Результат:

enter image description here

...