GNUPLOT:多个直方图,每个都有标准化的条形

时间:2017-04-03 15:18:42

标签: gnuplot histogram

我想首先说我对gnuplot很新。我试图绘制已经标准化的多个堆叠直方图,以便每个条的高度为1.我也更喜欢不必修改我的数据文件以包括总数作为最后一个条目,因为我有很多数据要绘制的文件,这将花费很多时间。我环顾四周,我知道这可以做到,但我没有成功地调整我发现使用我正在使用的代码的示例。 我正在使用的数据文件(大大缩短)被命名为“Test.dat”,格式如下:

#a = 2  
#b 1  2  3  X  
b=1  1  3  1   
b=2  0  1  1

#a = 4  
b 1  2  3  X   
b=1  1  1.5  1.5     
b=2  1  2.1  1.9

这里以b = x开头的每一行意味着是一个单独的条,并且有两组对应于a = x的两个条。我的.gp文件目前看起来像这样:

set style data histogram
set style histogram rowstacked gap .5 title offset 0, -1
set style fill solid border -1
set boxwidth .75 relative
set yrange [0:]
unset xtics

plot \\

newhistogram  "b=2"  lt 1, for[col=2:4] 'Test.dat' index 0 u col:xtic(1)   notitle \
,newhistogram "b=4"  lt 1, for[col=2:4] 'Test.dat' index 1 u col:xtic(1)   notitle \

这会给image,但这是what I would like to get。我很感激您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

  1. 您错过了评论标记"#"在第二个数据bolck。

  2. 您必须使用 2 空白行分隔每个数据块。

  3. 您在数据文件中使用"b=1""b=2",但脚本中使用了"b=2"b=4

  4. 最后:gnuplot能够制作堆积直方图,但无法自动将其标准化,但需要手动: - /

    set style data histogram
    set style histogram rowstacked gap .5 title offset 0, -1
    set style fill solid border -1
    set boxwidth .75 relative
    set yrange [0:]
    unset xtics
    
    plot \\\
    
    newhistogram  "b=1"  lt 1, for[col=2:4] 'Test.dat' index 0 u (column(col)/$5):xtic(1)   notitle, \
    newhistogram "b=2"  lt 1, for[col=2:4] 'Test.dat' index 1 u (column(col)/$5):xtic(1)   notitle