gnuplot rowstacked histogram - 不显示每个xtic

时间:2015-08-18 06:55:25

标签: gnuplot histogram

我有一个带有 lot 行的数据文件 - 在24小时内每5秒采样一次CPU使用率(分解为%user,%system,%iowait和%nice) ,所以17280个样本全部上传。我的输入文件如下所示:

Time              CPU     %user     %nice   %system   %iowait    %steal     %idle
17:11:05          all      4.46      0.00      0.57      0.79      0.00     94.18
17:11:10          all      2.34      0.00      0.31      0.44      0.00     96.91
17:11:15          all      2.48      0.00      0.33      0.14      0.00     97.06

要尝试查看何时出现高CPU负载,我想将非空闲CPU使用率随时间绘制为直方图,我使用的是这样的:

set key autotitle columnhead
set style data histogram
set style histogram rowstacked
set style fill solid border -1
set boxwidth 1.0
plot 'sarout.csv' using "%user":xtic(1), '' using "%system", '' using "%iowait", '' using "%nice"

麻烦的是,这给了我每一列的xtic(即时间),这是不可读的。

有没有办法让xtic只在一小时出现?即当时间字符串与“*:00:00”匹配时。

1 个答案:

答案 0 :(得分:1)

Gnuplot直方图没有传统的数值轴。您可以在xtic中添加条件,但这只会影响抽动标签,但不会影响抽搐。

要获得正常的数值轴,您必须绘制with boxes,但这不允许您堆叠值。或者你绘制并堆叠with boxxyerrorbars

set key autotitle columnhead
set style fill solid border -1
set xdata time
set timefmt '%H:%M:%S'
set format x '%H'
set xtics 360

plot 'sarout.csv' using 1:(0.5*column("%user")):(60):"%user" with boxxyerrorbars, \
        '' using 1:(column("%user")+0.5*column("%system")):(60):"%system" with boxxyerrorbars,\
        '' using 1:(column("%user")+column("%system")+0.5*column("%iowait")):(60):"%iowait" with boxxyerrorbars, \
        '' using 1:(column("%user")+column("%system")+column("%iowait")+0.5*column("%nice")):(60):"%nice" with boxxyerrorbars

写作非常冗长,但却能让你对抽动有最好的控制。我目前无法测试此代码,但它应该可以正常工作。