这两天我一直在努力解决这个问题。该堆叠直方图的条形并未打印在彼此之上。它们自由地漂浮着。
其次,我只想打印任何第 5 个 xtic 标签。我正在使用 GnuPlot v 4.6 补丁级别 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"
最佳答案
Gnuplot 似乎与仅作为列内容的 -
混淆。另外,设置数据文件缺少“-”
也没有帮助。您需要一个包含真正空字段的数据文件,例如
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"
关于GnuPlot:堆叠直方图导致悬停条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620335/