Похоже, gnuplot не может иметь два разных стиля отображения для x-grid и y-grid.Один обходной путь, который я вижу в настоящее время, состоит в том, чтобы построить два идентичных графика друг на друге.Одна с соответствующими линиями x-сетки, а другая с соответствующими линиями y-сетки.
Если вы хотите пунктирный узор с пропорциями (50-25-20-25)
, это соответствует (25-25-20-25-25-0)
или (5-5-4-5-5-0)
между двумя тиками.Кроме того, цифры длины тире и промежутка, например, в dt (50,25,20,25)
, похоже, находятся в фиксированном отношении к размеру графика.«Эмпирический» коэффициент равен 11 с хорошим приближением (по крайней мере, для терминала wxt, который я тестировал в gnuplot 5.2.6).
Правка: на самом деле приведенный ниже код даетразные результаты с qt
терминалом.И это не просто другой фактор.Это сложнее и, вероятно, трудно решить без понимания исходного кода.Таким образом, тот факт, что следующее, похоже, работает с терминалом wxt
(может быть, даже только под Windows?), Возможно, был удачным ударом.
С этим вы можете автоматически создавать свои штриховые линии, что приводит к перекрестиюна пересечениях основных линий сетки.
Допущения:
- ваш первый и последний тики находятся на границах
- вы знаете число х иy-интервалы
Вам также необходимо знать размер графика.Эти значения хранятся в переменных GPVAL_TERM...
, но только после построения .Вот почему вам нужно replot
, чтобы получить правильные значения.
Этот обходной путь должен, по крайней мере, всегда давать перекрестие на пересечении основных линий сетки.
Редактировать 2: просто для "полноты".Факторы для получения одинакового (или похожего) пользовательского штрихового рисунка на разных терминалах значительно различаются.wxt
ок.11 qt
ок.5,6 pngcairo
ок.0.25.Это не то, что я ожидал.Кроме того, похоже, что факторы немного зависят от x и y, а также от размера графика.Чтобы получить «точное» перекрестие, вам, возможно, придется немного подправить эти цифры.
Код:
### dashed grid lines with crosshairs at intersections
reset session
TERM = "wxt" # choose terminal
if (TERM eq "wxt") {
set term wxt size 800,600
FactorX = 11. # wxt
FactorY = 11. # wxt
}
if (TERM eq "qt") {
set term qt size 800,600
FactorX = 5.58 # qt
FactorY = 5.575 # qt
}
if (TERM eq "pngcairo") {
set term pngcairo size 800,600
set output "tbDashTest.png"
FactorX = 0.249 # pngcairo
FactorY = 0.251 # pngcairo
}
set multiplot
set ticscale 0,0
Units = 24 # pattern (5,5,4,5,5,0) are 24 units
# set interval and repetition parameters
IntervalsY = 10
RepetitionsY = 1
IntervalsX = 4
RepetitionsX = 3
# initial plot to get graph size
plot x**2
gX = real(GPVAL_TERM_YMAX-GPVAL_TERM_YMIN)/IntervalsY/Units/FactorY/RepetitionsY
gY = real(GPVAL_TERM_XMAX-GPVAL_TERM_XMIN)/IntervalsX/Units/FactorX/RepetitionsX
# first plot with x-grid lines
set grid xtics lt 1 lc rgb "black" dt (gX*5,gX*5,gX*4,gX*5,gX*5,0)
replot
unset grid
# second plot with y-grid lines
set grid ytics lt 1 lc rgb "black" dt (gY*5,gY*5,gY*4,gY*5,gY*5,0)
replot
unset multiplot
set output
### end of code
Результат: