Bash scripting 17 – Using data files 3
So, carrying on from the previous article(s). I am going to be using gnuplot to display the data. I found a useful site, that has examples of how to use the software, from basic to more advanced examples.
Notes: As with bash gnu plot has command history, so you can use arrow keys to move up / down between previously entered commands.
Based on the information at [2] we can produce a very basic plot of what is in log.csv
Load GNUPlot
gnuplot
and enter
plot 'log.csv'
This example isn't all that good really, but it at least produces some output. I have modified one of the examples further down that page
plot 'log.csv' using 1:2 with lines, 'log.csv' using 1:2 with lines
So the following data set
0, 1
1, 10
2, 10
3, 7
4, 2
5, 1
6, 15
7, 0
8, 19
9, 3
Should produce something like

Adding extra columns
We probably need more than two columns. This is easily done by modifying the loop in the script gendata1.csv. It is a good idea to copy this to a new script so it keeps the original as is
cp gendata1.sh gendata2.sh
As gendata1.sh has write permissions, these will be preserved in the new copy of the file. We can now edit gendata2.sh
echo "number" "data" # for reference, not written to file
for ((i = 0 ; i < 10 ; i++)); do
echo $i, $((RANDOM % 20)), $((RANDOM % 20)) # echo to screen (stdout)
echo $i, $((RANDOM % 20)), $((RANDOM % 20)) >> log.csv # write to file
#write_csv $(($i, $RANDOM % 10))
done
So all we are doing here is adding in, note the comma
, $((RANDOM % 20))
As the only difference between the lines
echo $i, $((RANDOM % 20)), $((RANDOM % 20)) # echo to screen (stdout)
echo $i, $((RANDOM % 20)), $((RANDOM % 20)) >> log.csv # write to file
Is that the first line, writes to the screen, it may be better to test the script out, check it does what you want, then modify the line that writes to a file once you are happy.
References
1 gnuplot
2 gnuplot examples
3. GNU Plot and LaTeX, included for reference
Chat
I am on the Devon and Cornwall Linux user group mailing list and also their matrix channel as zleap, it is better to ask there, that way others can answer too.
Tags
#Bash,#Bashscripting,#Files,#UsingDataFiles,#Data,#gnuplot,#graphs,#BashScripting
AI statement :
Consent is NOT granted to use the content of this blog for the purposes of AI training or similar activity. Consent CANNOT be assumed, it has to be granted.
