GNUplot多重图中只有1 y标签

时间:2013-06-28 15:06:47

标签: gnuplot

我使用gnu plot绘制一个多重绘图,在我的脚本中我设置y标签:

set ylabel "foobar"

现在,多重绘图中的每个绘图在y轴上都有一个专用的y标签。但是,我希望只有一个y标签用于多重绘图中的所有绘图,并且中心标记也在公共y轴上。我怎样才能做到这一点?我使用的多色布局是7.1所以所有的图都有相同的y轴。

4 个答案:

答案 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)

enter image description here

这是一个促使我执行此操作的实际应用程序: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 8set 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

结果:

enter image description here