Как настроить число автоматических тиков в gnuplot? - PullRequest
0 голосов
/ 07 января 2019

Полезно, чтобы gnuplot автоматически выбирал достаточно хороший диапазон x / y и номер x / y-tics (скажем, примерно 5, как показано на рисунке).

Однако иногда я хотел бы увеличить / уменьшить количество тиков.

Конечно, изменить количество тиков очень просто. Я хотел бы воспользоваться преимуществом этого «автоматического выбора тиков» в gnuplot, но с настройкой тикового числа. Есть ли способ с этим справиться?

Спасибо!

image

Ответы [ 2 ]

0 голосов
/ 08 января 2019

ОК, теперь я понимаю вашу точку зрения. Особенно в мультиплотах или когда графики становятся маленькими относительно размера меток тиков, тиков слишком много. Найдите ниже обходной путь, который, кажется, работает в продемонстрированных случаях. Если он работает хорошо все время, вам нужно проверить. Недостатком является то, что вы должны сначала построить фиктивную таблицу, чтобы получить предложение gnuplot о минимальных и максимальных тиках, которые gnuplot помещает в переменные GPVAL_..., а затем заново реплотировать.

На графике под первой строкой приведена gnuplot auto-tic, во второй строке - попытка полуавтоматической аппроксимации. Может быть, это отправная точка для дальнейшей настройки.

### semi-automatic tics
reset session

Round(n) = gprintf("%.0e",n)
# or alternatively with less approximate tics: 
# Round(n) = gprintf("%.0e",n) + sgn(n)*10**gprintf("%T",n)
SemiAutoTicX(ApproxTicN) = Round((GPVAL_X_MAX - GPVAL_X_MIN)/ApproxTicN)
SemiAutoTicY(ApproxTicN) = Round((GPVAL_Y_MAX - GPVAL_Y_MIN)/ApproxTicN)

set multiplot layout 2,3 rowsfirst

### with gnuplot auto-tic
set xrange [-10:10]
plot x

set xrange [-100:100]
plot x**2

set xrange [-90:90]
plot x

### now with semi-auto tics
set style line 1 lc rgb "red"
set xrange [-10:10]
set table $Dummy
    plot x ls 1
unset table
set xtics SemiAutoTicX(5)
set ytics SemiAutoTicY(5)
replot

set xrange [-100:100]
set table $Dummy
    plot x**2 ls 1
unset table
set xtics SemiAutoTicX(5)
set ytics SemiAutoTicY(5)
replot

set xrange [-90:90]
set table $Dummy
    plot x ls 1
unset table
set xtics SemiAutoTicX(5)
set ytics SemiAutoTicY(5)
replot

unset multiplot

enter image description here

0 голосов
/ 07 января 2019

Не уверен, получу ли я ваше "конечно, легко изменить число тиков", и я, возможно, даю ответ, который вы уже знаете сами - но в любом случае:

С help set xics:

Позиции тиков рассчитываются автоматически по умолчанию или, если предоставляется опция autofreq; в противном случае они могут быть указаны в любая из двух форм:

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

Итак, для начала - вы можете поиграть с настройками самостоятельно:

set xtics -7, 1.5
plot[-7.5:7.5][] sin(x)

что дает вам

enter image description here

...