带有gnuplot的两个“带盒子”的图表彼此相邻

时间:2012-03-22 16:45:20

标签: gnuplot

我试图在一个图中将两个数据系列绘制为gnuplot中的框。该脚本目前看起来像这样:

set terminal postscript eps enhanced color
set title "Distribution of the extrepreneur PnL. Loan $6."
set output 'pnl_loan6.eps'


#set xrange [0:]
set xlabel "Discounted profit"

set style fill solid 0.8 border -1
plot 'pnl_loan6.txt' using 1:2 title 'PnL high risk (xi=1)' with boxes,\
     'pnl_loan6.txt' using 1:3 title 'PnL high risk (xi=1.5)' with boxes
然而,这两个系列重叠。我希望有一个系列在现有盒子的左半部分绘制它的盒子,而在另一半盒子中绘制另一个系列,以便它们有效地交替。我该怎么办?

编辑:

  1. 我尝试了直方图,但这看起来不太好。 xtics不是我追求的,并且列之间有空格。
  2. 样本数据(100个中的前20列):
  3. 数据:

    -10.000000 20251.000000 31825.000000
    -4.892638 26743.000000 21310.000000
    0.214725 20362.000000 14590.000000
    5.322087 13023.000000 9645.000000
    10.429449 7730.000000 6347.000000
    15.536812 4636.000000 4331.000000
    20.644174 2714.000000 2964.000000
    25.751536 1647.000000 2121.000000
    30.858899 1044.000000 1586.000000
    35.966261 648.000000 1106.000000
    41.073624 396.000000 873.000000
    46.180986 257.000000 685.000000
    51.288348 166.000000 471.000000
    56.395711 101.000000 369.000000
    61.503073 83.000000 321.000000
    66.610435 52.000000 260.000000
    71.717798 40.000000 184.000000
    76.825160 30.000000 172.000000
    81.932522 21.000000 143.000000
    87.039885 11.000000 116.000000
    

3 个答案:

答案 0 :(得分:9)

我不确定你的目标是什么,但也许这种有点黑客的方法可以解决问题:

set style fill solid 0.8 border -1
set boxwidth 0.5 relative
plot 'pnl_loan6.txt' using ($1+1.27684075):2 title 'PnL high risk (xi=1)' with boxes,\
     'pnl_loan6.txt' using ($1-1.27684075):3 title 'PnL high risk (xi=1.5)' with boxes

与脚本的区别在于

  1. 设置boxwidth do 0.5 relative
  2. 将曲线偏移x轴上的距离的一半(这只能起作用,因为x轴缩放是等距的。
  3. 无论如何这是由此产生的情节:

    enter image description here

    PS: 您可能想要考虑使用set logscale y的y轴上的对数缩放,这将导致此图:

    enter image description here

答案 1 :(得分:0)

您可以尝试histogram样式......或者set boxwidth

修改

对于boxwidth,请参阅Woltan的回答 - 看到您的数据文件后,这可能是最好的方法。

你可以这样做:

set style histogram cluster gap 0
plot "datafile.dat" u 2:xtic(1) with histogram ...

但是,在这种情况下你会有一个过度拥挤的x轴 - 但是如果你想用字符串标记轴,这种方法效果很好。

最后一点说明: 做以下事情可能是个好主意 -

set style fill solid 0.8 border -1
set boxwidth 0.5 relative
plot 'datafile.dat' using ($1+1.27684075):2 title 'PnL high risk (xi=1)' with boxes,\
     '' using ($1-1.27684075):3 title 'PnL high risk (xi=1.5)' with boxes lc rgb "#0000ff"

这会将绿色框的颜色更改为蓝色(#0000ff),因为约有5%的人是红色/绿色色盲。 (您可以使用“蓝色”而不是“#0000ff” - 但后者更为通用)。

答案 2 :(得分:0)

这个链接还有一个简单的好方法,当只有一组数据时,当有更多数据时,使用“带框”代替直方图。它对我来说非常有效,并且没有在接受的答案中建议的那些难以理解的偏移计算:

http://gnuplot-surprising.blogspot.ca/2011/09/plot-histograms-using-boxes.html