使用具有多个 y-axes 的 gnuplot 的直方图

Histogram using gnuplot with multiple y-axes

我找不到解决我面临的以下问题的方法。 multi-axis 上的所有 SO 问题都谈论线图,但我正在寻找直方图。

条形图的 y-range 不同,因此一组条形图因比例尺而没有真正看到。这是数据:


Metric A B
M1 0.613416301 0.543734744 
M2 0.000195961 0.000100190
</pre>

这是 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
</pre>

这是样本输出(没有看到 M2 上的一组柱):

我更喜欢的是第二个 y-axis(在图的右侧),其范围适合我的数据文件的第二行。这可能吗?非常感谢任何帮助。

通常您可以使用 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

如果你不想要分隔黑线,你可以使用 set border 7 作为第一个,set border 13 作为第二个。