因为两天我试图解决这个问题。该堆叠直方图的条形不会彼此重叠。它们可以自由浮动。
其次,我只想打印任何第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"
答案 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"
答案 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