【问题标题】:stacked graph with gnuplot带有 gnuplot 的堆叠图
【发布时间】:2012-07-19 11:40:00
【问题描述】:

我的数据文件是这样的

A 20120301 4
A 20120302 3
B 20120301 5
B 20120302 6
C 20120303 5

除了 A、B、C 之外还有很多,我想用 gnuplot 创建一个堆叠图(类似于 gnuplot demos 中的“堆叠直方图”)

20120301 = (A:4 + B:5)
20120302 = (A:3 + B:6)
20120303 = (C:5)

到目前为止,我无法说服 plot 以该格式读取数据。我是否为此重新安排了数据文件?或者有没有办法让 gnuplot 读取该格式的数据?

【问题讨论】:

  • 我很难从你的描述中找出你想要堆叠的元素。每行是否对应于一堆盒子?例如B:5 堆叠在 20120301 列中的 A:4 上?如果是这样,字母(A,B,C)的意义是什么。这应该与盒子的颜色相对应吗?
  • @mgilson 是的,你说得对。 A-C 是类型(因此也是颜色)。在我的示例中,您应该看到 3 个堆叠的列,总高度为 9、9、5。前两列应由 A 和 B 两个框组成。

标签: gnuplot


【解决方案1】:

我想我已经设法将它打造成可以工作的形式(您至少需要 gnuplot 4.3):

set boxwidth 0.75 absolute
set style fill   solid 1.00 border lt -1
set datafile missing '-'
set style histogram rowstacked
set style data histograms
set yrange [0:]
plot for [i=2:4] 'test.dat' u i,'' u (0.0):xtic(1) notitle

这是数据文件test.dat

#date     A B C
#missing data is marked by a minus sign
20120301  4 5 -   
20120302  3 6 -
20120303  - - 5

呸!在直方图方面,我对 gnuplot 的使用从来都不是很好。希望这对您有用(对您的数据文件的更改感到抱歉)。

【讨论】:

  • 感谢您的努力,@mgilson。使用面向列的方法,我也可以使用它(在提出问题之前 :) 不改变数据格式是问题的重点。
  • @tcurdt -- 那么在这种情况下,我会说不可能;)。 (但我很想被证明是错误的)。