我使用gnu plot绘制一个多重绘图,在我的脚本中我设置y标签:
set ylabel "foobar"
现在,多重绘图中的每个绘图在y轴上都有一个专用的y标签。但是,我希望只有一个y标签用于多重绘图中的所有绘图,并且中心标记也在公共y轴上。我怎样才能做到这一点?我使用的多色布局是7.1所以所有的图都有相同的y轴。
答案 0 :(得分:6)
最简单的方法是制作第一个图,然后关闭y标签:
set ylabel 'foo'
set multiplot
plot 'data1.dat'
unset ylabel
plot 'data2.dat'
plot ...
unset multiplot
这将使第一个图的x维度与所有其他图表的x维度不同,因此如果您希望所有图表具有完全相同的大小,则可能必须使用边距。
答案 1 :(得分:3)
绘制尺寸缩小的单个面板,不带标签,但带有边框,色调和标题,然后定义一个带标签但没有边框,抽搐和标题的全尺寸面板。您可能需要绘制一个虚拟函数(1/0)
答案 2 :(得分:0)
全局标签解决方法
这并不理想,但是如果您像我一样绝望,则可以使用旋转的全局标签+较大的左页边距:
#!/usr/bin/env gnuplot
label_label_size = 14
set terminal png
set output "gnuplot.png"
set multiplot layout 2,1 title "Multiplot with one ylabel" font ",18"
set lmargin 10
set label "My y-label" at screen 0.05,0.5 center front rotate \
font "," . label_label_size
plot sin(x)
set xlabel 'My x-label' font "," . label_label_size
plot cos(x)
这是一个促使我执行此操作的实际应用程序:Heap vs Binary Search Tree (BST)
在gnuplot 5.2补丁程序级别6(Ubuntu 19.04)中进行了测试。
答案 3 :(得分:0)
这基本上是Fabian Claremont回答的建议,但是(对于初学者)已放入代码中并可视化了。实际上,Ciro Santilli的解决方案甚至更短。
使用gnuplot 5.2测试。对于gnuplot 4.6(OP提出问题的时间),将reset session
替换为reset
,将set margin 8,-1,1-1
替换为set lmargin 8
和set bmargin 1
。
代码:
### Multiplot with single y-label
reset session
unset key
set sample 500
set multiplot layout 7,1
unset ylabel
set linetype 1 lc rgb "red"
set margins 8,-1,1,-1 # left, right, bottom, top (-1=auto)
set ytic 1.0
set title "Plot 1" offset 0,-1
plot sin(1*x)
set title "Plot 2" offset 0,-1
plot sin(2*x)
set title "Plot 3" offset 0,-1
plot sin(3*x)
set title "Plot 4" offset 0,-1
plot sin(4*x)
set title "Plot 5" offset 0,-1
plot sin(5*x)
set title "Plot 6" offset 0,-1
plot sin(6*x)
set title "Plot 7" offset 0,-1
plot sin(7*x)
set lmargin -1 # automatic lmargin
unset title
set origin 0,0
set size 1,1
set border 0
unset tics
set ylabel "This is a centered y-label"
plot [][0:1] -1 # plot a dummy line out of range
unset multiplot
### end of code
结果: