Gnuplot columnstacked直方图 - 行/行计数

时间:2012-02-16 09:28:14

标签: gnuplot histogram

我有一个数据文件,其中包含未定义数量的条目,如下所示:

A B C D E..
1 0 2 5 4
7 4 3 4 1
8   7 4 0
7     1 1

第一行以交替方式表示工作时间,而不是暂停等。为了想象这一点,我通过定义两种不同颜色的线条样式并通过以下方式绘制柱状图来绘制柱状直方图:

plot for [i=1:10] 'data.log' using i notitle

但问题是:我必须猜测i的最大值。如何获取数据文件的列数? 在定义交替线条样式时,我需要估计最大行数,以便覆盖我使用类似for循环的默认线条样式:

set for [j = 1:1000:2] style line i lc rgb "white"
set for [j = 2:1000:2] style line i lc rgb "red"

这里我需要设置数据中一列的最大数字行作为j的最大值。

有没有办法获取这些值?可能只使用gnuplot的内置功能(因为我不熟悉awk脚本)。

感谢阅读, 最好的问候

PS:我正在使用Windows

1 个答案:

答案 0 :(得分:4)

您可以像这样确定数据文件的列数和行数:

rows = `awk 'END {print NR}' data.log`
columns = `awk '{if(NR == 1) print NF}' data.log`
print "The maximum number of rows is ", rows, " and the maximum number of columns is ", columns
plot for [i=1:columns] 'data.log' using i notitle

您可以在不使用此方法的awk

的情况下获得相同的结果
rows = `cat data.log | wc -l`
columns = `head data.log -n1 | wc -w`