GNUPLOT:多个直方图,每个直方图带有标准化条

GNUPLOT:多个直方图,每个直方图带有标准化条,gnuplot,histogram,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

首先,我想说我对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 \
这给了我们一个机会,但这是。如果您能提供任何帮助,我将不胜感激

  • 您在第二个数据块中遗漏了注释符号“#”

  • 必须用2空行分隔每个数据块

  • 您在数据文件中使用的是
    “b=1”
    “b=2”
    ,但在脚本中使用的是
    “b=2”
    b=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
    
  • 您在第二个数据块中遗漏了注释符号“#”

  • 必须用2空行分隔每个数据块

  • 您在数据文件中使用的是
    “b=1”
    “b=2”
    ,但在脚本中使用的是
    “b=2”
    b=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
    

  • 评论1-3是我在这里复制的错误。谢谢你的回复,很遗憾你不能在gnuplot中定义一个函数来完成这项工作,但是谢谢anway。注释1-3是我在这里复制的错误。谢谢你的回复,很遗憾你不能在gnuplot中定义一个函数来实现这一点,但是谢谢anway。