GnuPlot:堆积直方图导致悬停条

时间:2016-01-05 20:07:04

标签: gnuplot

因为两天我试图解决这个问题。该堆叠直方图的条形不会彼此重叠。它们可以自由浮动。

其次,我只想打印任何第5个xtic标签。我正在使用GnuPlot v 4.6 patchlevel 6. hovering bars in stacked bargraph

以下是第一批数据行(使用libreoffice生成):

05.06,-,-,1
06.06,3,-,0
07.06,12,-,3
08.06,0,5,4
09.06,7,2,0
10.06,86,2,1
11.06,31,4,1
12.06,17,1,0
01.07,1,7,1

命令集来了:

gnuplot> set datafile separator ','
gnuplot> set style data histogram
gnuplot> set style histogram rowstacked
gnuplot> set style fill solid border -1
gnuplot> set xlabel "Zeit"
gnuplot> set ylabel "Anzahl"
gnuplot> set yrange [0:250]
gnuplot> plot 'test.csv' using 2:xtic(1) title "Menge A",'' 
gnuplot> using 3:xtic(1) title "Menge B",''
gnuplot> using 4:xtic(1) title "Menge C"

2 个答案:

答案 0 :(得分:1)

Gnuplot似乎与-混淆为仅列内容。另外set datafile missing '-'也无济于事。您需要一个包含非空字段的数据文件,例如

05.06,,,1
06.06,3,,0
07.06,12,,3

如果您无法让LibreOffice正确保存数据文件,您可以使用例如sed即时处理文件:

plot "< sed 's/-//g' test.csv" using 2:xtic(1), '' ...

(如果您没有负值,这可以正常工作,我认为是这种情况)。

到第二部分:代替xtic(1),您还可以将任何计算结果的表达式放在xtic内,如

xtic(int($0)%5 == 0 ? strcol(1) : '')

如果行号为5的倍数,则使用第一列中的字符串作为xticlabel,否则为空字符串:

set datafile separator ','
set style data histogram
set style histogram rowstacked
set style fill solid border -1
set xlabel "Zeit"
set ylabel "Anzahl"
set yrange [0:*]
plot '< sed "s/-//g" test.csv' using 2:xtic(int($0)%5 == 1 ? strcol(1) : '') title "Menge A",\
     '' using 3 title "Menge B",\
     '' using 4 title "Menge C"

enter image description here

答案 1 :(得分:1)

正如Christoph已经解释的那样,问题是由输入数据中的-引起的 因此,最好和最干净的解决方案是使LibreOffice以不同方式显示丢失的数据。

然而,当我用using COLUMNNUMBER掩盖using $COLUMNNUMBER部分时,一切正常。因此,我将代码的最后一行更改为

plot 'test.csv' u ($2):xtic(1) t "Menge A", '' u ($3) t "Menge B", \
     '' u ($4) t "Menge C"

如您所见,您可以将using缩短为u,将title缩短为t。此外,您应该仅对第一个数据集使用:xtic(1) 这是我的outoput enter image description here