使用gnuplot绘制带有多个y轴的直方图

4

我遇到了以下问题,但是找不到解决方法。所有关于多轴的SO问题都是关于线图的,但我是在寻找直方图。

The y-range for the bars are different, so one set of bars are not really seen because of the scale. Here is the data:


Metric A B
M1 0.613416301 0.543734744 
M2 0.000195961 0.000100190

Here is the MWE:


reset
set term postscript eps size 5.5,4.5 enhanced color font 'Arial-Bold' 25
set out 'histplot.eps'
set key right 
set style histogram cluster gap 2 
set style data histograms
set style fill pattern 1.00 border
set y2range [0.0001:0.0002]
plot 'histplot.dat' using 2 ti col, '' u 3:xticlabels(1) ti col
quit

这是样例输出(一个M2上的柱集没有被看到): 比较指标

我想要的是在图的右侧拥有第二个y轴,其范围适合于我的数据文件的第二行。这可行吗?非常感谢你的帮助。


只是想澄清一下:您不需要破碎轴、对数缩放或类似的功能吗? - Wrzlprmft
@Wrzlprmft:是的,我不想要对数缩放。抱歉,我不理解“broken axis”这个术语。 - Jey
这是一个破碎轴的示例:http://www.andypope.info/charts/brokencol.gif。 - Wrzlprmft
@Wrzlprmft:谢谢。我更喜欢不间断的坐标轴。 - Jey
1个回答

5

通常您可以使用 newhistogram 将多个直方图堆叠在一起。然而,当使用填充样式作为图案时,似乎存在错误:

reset
set style histogram cluster gap 1
set style data histograms
set style fill pattern 1.00 border

set yrange [0:*]
set ytics nomirror
set y2range [0:*]
set y2tics

set key right autotitle columnheader
plot 'histplot.dat' u 2 every ::::0, '' u 3:xtic(1) every ::::0,\
     newhistogram lt 1 at 1,\
     'histplot.dat' u 2 every ::1::1 axes x1y2, '' u 3:xtic(1) every ::1::1 axes x1y2

在这里输入图片描述

或者您可以使用 multiplot 并将两个直方图直接放置在彼此下面:

reset
set style histogram cluster gap 1
set style data histograms
set style fill pattern 1.00 border

set yrange [0:*]
set ytics nomirror
set multiplot layout 1,2
set rmargin at screen 0.5
set lmargin 9
unset key
plot 'histplot.dat' using 2 every ::::0 ti col, '' u 3:xticlabels(1) every ::::0 ti col

set rmargin 9
set lmargin at screen 0.5
unset ytics
set y2range [0:*]
set y2tics
set key right
plot '' using 2 every ::1::1 axes x1y2 ti col, '' u 3:xtic(1) every ::1::1 axes x1y2 ti col
unset multiplot

enter image description here

如果您不想要分隔黑线,您可以在第一个图中使用set border 7,在第二个图中使用set border 13


该段文字涉及到两张图表的边框设置,通过使用不同的命令可以去掉它们之间的分隔线。在第一个图表中,设置边框为7,在第二个图表中设置为13即可。

太棒了!非常感谢。你对许多 gnuplot 问题的回答真的很有用。也谢谢你为此付出的努力。 - Jey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接