#plot #gnuplot #height #equals
#график #gnuplot #высота #равно
Вопрос:
я хочу создать gnuplot multiplot с тремя графиками друг над другом. это работало до сих пор, когда я не добавлял метку оси x и не устанавливал все tmargin и bmargin равными. но когда я добавляю метку оси x и xtics под самым низким графиком, этот график уменьшается по высоте, как показано на рисунке. у вас есть идея, как создавать графики одинакового размера с меткой по оси x под самым низким графиком?
это мой код:
reset
set lmargin 9
set rmargin 3
unset key
set xrange [-1:41]
set boxwidth 0.4
set style fill solid noborder
set multiplot layout 3,1
set xtics format ""
set xtics 5
unset xlabel
set ytics 100
set logscale y
set format y "10^{%L}"
set key ins vert right top
set tmargin 0.8
set bmargin 0.5
set yrange [1:100000000]
#set ylabel "Photonen / s [Mio.]" offset 0,0,0 font ""
plot "300sLinienMit0.txt" u (($1)):($2/300) w boxes lc rgb "#6699ff" title "185,72 keV"
set xtics format ""
unset xlabel
set ytics 10
set tmargin 0.5
set bmargin 0.5
set yrange [1:1000]
set ylabel "Photonen [s^{-1}]" offset -2,0,0 font ""
plot "300sLinienMit0.txt" u ($1):($3/300) w boxes lc rgb "#ff6600" title "351,03 keV"
unset ylabel
set xtics format ""
unset xlabel
set tmargin 0.5
set yrange [1:1000]
set format x "%g"
set xtics 5 offset 0,0,0
set bmargin 3.5
set xlabel "Blei-Abschirmung [mm]" offset 0,0,0 font ""
#set ylabel "Photonen / s [Tsd.]" offset 0,0,0 font ""
plot "300sLinienMit0.txt" u ($1):($4/300) w boxes lc -1 title "831,98 keV"
unset multiplot
Ответ №1:
Вы должны самостоятельно устанавливать положения и размеры ваших (вспомогательных) графиков в среде multiplot. Важно set bmargin 0
. Поле нижнего графика, которое вы задаете через set origin 0, myBottomMargin
. А затем соответствующим образом установите происхождение и размеры других графиков. Я надеюсь, что следующий код не требует объяснений.
Код:
### multiplot with equal plot heights
reset session
myBottomMargin = 0.15
myPlotHeight = (1. - myBottomMargin)/3
set multiplot
set xlabel "This is the xlabel for all plots"
set ytics 0.5
set grid xtics, ytics
set origin 0, myBottomMargin
set size 1, myPlotHeight
set bmargin 0
set label 1 at graph 1.0, graph 1.0 "185.72 keV" right offset -1,-1
plot sin(x) w l lc 1 notitle
unset xlabel
set format x ""
set origin 0, myBottomMargin myPlotHeight
set label 1 at graph 1.0, graph 1.0 "351.03 keV" right offset -1,-1
plot sin(2*x) w l lc 2 notitle
set origin 0, myBottomMargin 2*myPlotHeight
set label 1 at graph 1.0, graph 1.0 "831.98 keV" right offset -1,-1
plot sin(3*x) w l lc 3 notitle
unset multiplot
### end of code
Результат:
Комментарии:
1. вау! идеально! большое вам спасибо 🙂 единственное, что сейчас, это то, что мне не нужен символ в ключе, просто число. есть идея?
2. Спасибо за ваше дополнение. Таким образом, символ ключа не виден, но число, например, «185,72», все еще находится в том же положении, что и раньше. Было бы красивее, если бы он был выровнен по правому краю, как символ на моей картинке выше. У кого-нибудь есть идея, как удалить символ в ключе, чтобы заголовок графика был выровнен по верхнему правому краю?
3. я нашел на странице 62 руководства по gnuplot 5.2 (версия 5.2, организованная: Итаном Мерриттом и многими другими) график, в котором ключ имеет только текст и не имеет символа, но сценарий не показан — я все еще не знаю, как это сделать, но это возможно!
4. если вы просто хотите иметь одно число в правом верхнем углу каждого графика, вы могли бы использовать
set label
. Проверьтеhelp label
. Всегда используйтеlabel 1
для перезаписи предыдущей метки. Я изменю пример.5. @pablobanano отвечает ли это на ваш вопрос? Приветствуется любой ответ.