我想首先说我对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。我很感激您提供的任何帮助。
答案 0 :(得分:0)
您错过了评论标记"#"在第二个数据bolck。
您必须使用 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