Gnuplot columnstacked histogram - line/row count

浪子不回头ぞ 提交于 2019-12-07 10:27:59

问题


I have a data file with an undefined number of entries that looks like this:

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

First row represents working time, than pause and so on in alternating fashion. To visualise this, I plot a columnstacked histograms from it by defining two linestyles with different colours and plotting it via:

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

But the problem is: I have to guess the max value of i. How can I get the number of columns the data file has? And when defining the alternating linestyles I need to estimate the max number of lines in order to overwrite the default linestyles for what i use a similar for-loop:

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

Here I need to set the max number lines a column in my data has as the max value for j.

Is there a way to grab these values? Possibly by using built-in features of gnuplot only (for I am not familiar with awk scripting).

Thanks for reading, best regards

PS: I'm using Windows


回答1:


You can determine the number of columns and rows of your datafile like this:

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

You can achieve the same result without using awk with this approach

rows = `cat data.log | wc -l`
columns = `head data.log -n1 | wc -w`


来源:https://stackoverflow.com/questions/9308602/gnuplot-columnstacked-histogram-line-row-count

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!