“两块地”;“带盒子”;与gnuplot相邻

“两块地”;“带盒子”;与gnuplot相邻,gnuplot,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

我正在尝试将两个数据系列绘制在一个图形中,作为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
然而,这两个系列是重叠的。我希望一个系列在现有框的左半部分绘制框,另一个在右半部分绘制框,而不是重叠,以便它们有效地交替。我怎么做

编辑:

  • 我尝试了一个直方图,但这看起来不是很好。XTIC不是我想要的,列之间有空格
  • 示例数据(100列中的前20列):
  • 数据:


    您可以尝试
    直方图
    样式。。。或者
    设置boxwidth

    编辑

    对于
    boxwidth
    请参见Woltan的答案——在查看数据文件之后,这可能是最好的方法

    你可以做:

    set style histogram cluster gap 0
    plot "datafile.dat" u 2:xtic(1) with histogram ...
    
    但是,在这种情况下,x轴会非常拥挤——但是如果要用字符串标记轴,这种方法非常有效

    最后一点注意: 这样做可能是个好主意--


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

    我不太确定你想要什么,但也许这个小小的黑客方法会奏效:

    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
    
    您的脚本的区别在于

  • 将boxwidth设置为0.5相对
  • 将打印偏移x轴上距离的一半(这仅适用于x轴缩放等距)
  • 无论如何,这就是结果图:

    附言: 您可能需要考虑在y轴上使用
    set logscale y
    进行对数缩放,这将导致此图:


    此链接还有一个简单的很好的解决方案,即在只有一组数据和有更多数据的情况下,使用“带方框”代替直方图。它对我非常有效,并且没有公认答案中建议的所有难以理解的偏移计算:


    您正在绘制哪种类型的数据?(数据文件第一个字段中的内容是连续整数吗?如果我有一个小数据文件要处理,我可能会给您一个更完整、更可靠的答案)您好,我尝试了直方图样式,但它似乎做了另一件事。您能举一个例子说明这组boxwidth吗?我如何指定我想要原始的一半?另外我需要将一个向左移动,另一个向右移动?这正是我想要的!常量
    +-1.27684075
    来自哪里?它们可能会改变吗nge如果数据发生变化?常数来自您的数据。您的数据以delta x=5.1隔开,因此每个框的宽度为该距离的一半(~2.55)。上面的脚本将前半框的宽度向左移动(-1.27),将后半框的宽度向右移动(1.27)因此,如果x数据的间距改变,常数的值也会改变。可以使用
    stats
    命令(我喜欢它)自动提取此信息:
    stats'file.txt'使用1 every:::1 nooutput;ofs=0.25*(stats\u max-stats\u min);plot…使用($1-ofs)…
    。博客文章中的解决方案与公认的解决方案几乎完全相同。
    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"
    
    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