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

标签 gnuplot

这两天我一直在努力解决这个问题。该堆叠直方图的条形并未打印在彼此之上。它们自由地漂浮着。

其次,我只想打印任何第 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"

enter image description here

关于GnuPlot:堆叠直方图导致悬停条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620335/

相关文章:

Gnuplot 从文件中绘制垂直线

r - Gnuplot 从样本中绘制多个箱线图

graphics - gnuplot 变量点大小

awk - 使用 AWK 删除数据

gnuplot - 如何在y轴大整数处画一条水平线?

gnuplot - Gnuplot : How do I draw a 2d surface on a domain which is not rectangular?

Gnuplot:如何在热图中写入 z 值

gnuplot - 绘图时如何设置可变线宽?

gnuplot - 从原始(未分箱)数据在 gnuplot 中创建 2D 直方图(热图)

gnuplot - 如何使网格虚线相交,在 gnuplot 中制作十字线?