Problem creating graph with gnuplot with time on x-axis


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem creating graph with gnuplot with time on x-axis
# 1  
Old 04-04-2013
Problem creating graph with gnuplot with time on x-axis

Let me start by saying I'm new to gnuplot and not very good at unix at all..

Anyway, I'm each minute measuring temperature and humidity and saves the last 60 readings along with time in a textfile, values_minute.

The contents of the file is formatted like this: time temperature humidity

Code:
14:10 22.8 19.1
14:11 22.8 19.1
14:12 22.8 19.1
14:13 22.8 19.0
14:14 22.8 19.0
14:15 22.8 19.0
14:16 22.8 19.0
etc...

I'm trying to create a graph using gnuplot, working with the shell first. Later I will do it with a script that will run once a minute to generate a "realtime" graph to be publish on a web site.

Code:
gnuplot
set terminal png
set output "graph_realtime.png"
set yrange [10:50]
plot "./values_minute" using 1:2 title 'Temperature' with lines; \
"./values_minute" using 1:3 title 'Humidity' with lines

But I'm given the error "invalid command". I'm quite frankly lost.

Last edited by radoulov; 04-04-2013 at 10:09 AM..
# 2  
Old 04-04-2013
; means 'end of statement', if you want to put another line on your graph after it you should use ,
# 3  
Old 04-04-2013
I just realised the code I posted was incomplete. Since the x axis is time gnuplot has to be told so.

So the final code looks like this:

Code:
gnuplot
set terminal png
set output "graph_realtime.png"
set yrange [10:50]
set timefmt "%H:%M"
plot "./values_minute" using 1:2 title 'Temperature' with lines, \
"./values_minute" using 1:3 title 'Humidity' with lines

This works without giving an error message, but all the values is located at the extreme ends of the graph.

Added
Code:
set xdata time

which helped. But now I need to make the x axis easily readable, maybe tics every 15 minutes.

Added
Code:
set xtics "14:00", 900, "16:00"

which help but it's still showing the time as hours:minutes:seconds, how to only show it as hours:minutes? And does it exist an easy way to replace (in my example) 14:00 and 16:00 with proper values, i.e. if it was measured from 09:05 to 10:04 the first tic (excluding the edges of the graph) would be at 09:15, the last at at 10:00? I guess it's similar to
Code:
 set xtics "%H:M", 900, "%H:%M"

or do I have to create a script that read the first and last value from the table with values and insert the correct time?

Last edited by hakro807; 04-04-2013 at 01:50 PM..
# 4  
Old 04-04-2013
Your set timefmt looks okay actually, but you also want to add the line set xdata time.
# 5  
Old 04-15-2013
I succeeded in creating a good-looking graph for the last 60 minutes. Format for data is
Code:
hh:mm value1 value2

Code:
set terminal png
set output "hour_graph.png"
set yrange [10:50]
set ylabel "Temperatur Celsius/Luftfuktighet procent"
set timefmt "%H:%M"
set xdata time
set xtics "00:00", 900, "24:00" #guess it will mess up temporarily at 24:00
set mxtics 3 #a small tic every five minute
set format x "%H:%M" #set format x was needed to format the x axis as hh:mm, not hh:mm:ss

plot "./hour_graph_values" using 1:2 title 'Temperatur' with lines, \
"./hour_graph_values" using 1:3 title 'Luftfuktighet' with lines

Would still love to know the syntax for letting gnuplot deal with both date and time.
At the moment the main log is in the following format:
yyyy-mm-dd hh:mm value1 value2

I just can't believe gnuplot would not be able to deal with something which most be so common.
# 6  
Old 04-15-2013
I am by no means a gpuplot expert but from the description of your original post, sounds like rrdtool might just be a tailor-made tool for what you're trying to achieve.
# 7  
Old 04-16-2013
Quote:
Originally Posted by verdepollo
I am by no means a gpuplot expert but from the description of your original post, sounds like rrdtool might just be a tailor-made tool for what you're trying to achieve.
It's too late for me to start anew, but I'll keep rrdtool in mind in case a similar assignment shows up later. Still, I appreciate you taking the time.

Looking back I wish I had just used epoch time, i.e. seconds since 1/1 1970. It would most likely have made it so much easier. Oh well, we live, we learn.. : ]
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Gnuplot Time Data Question

I have a data file of the following format: servername,2013-05-11 17:46:03,SomeText,195,195,11,202 servername,2013-05-11 17:47:03,SomeText,192,192,23,103 servername,2013-05-11 17:48:03,SomeText,189,190,14,117 servername,2013-05-11 17:49:03,SomeText,196,195,24,231 ... ... I want to... (0 Replies)
Discussion started by: BeeryM
0 Replies

2. Programming

Draw Bar Graph for GNUPLOT

For example, I have a file called data.txt. And the content is: Iker_Casillas 181 Raphael_Varane 182 Sergio_Ramos 182May I know how to write a script for gnuplot, so I can have a bar graph as the column 1 will be the x and column 2 will be the y? And I hope that the x value can be seen clearly.... (0 Replies)
Discussion started by: Tzeronone
0 Replies

3. Shell Programming and Scripting

gnuplot flat line graph

Hi, I'm not able to find a solution because I cant find the exact keyword for this. I wanna make a graph like ive shown in the attachment. Could someone please share ideas on how to do this. Thanks! (3 Replies)
Discussion started by: jamie_123
3 Replies

4. UNIX and Linux Applications

GnuPlot - 2d-graph --> depending from size, different color

Hi, i would like to change color depending from the valuerange. a gnuplot-script will generate a multiplot and in one graph, the ranges should have different colors, e.g. 100 ... 133 --> red 200 ... 233 --> blue 300 ... 333 --> orange 400 ... 433 --> green #Partikeldata - Partikel... (1 Reply)
Discussion started by: IMPe
1 Replies

5. Programming

Creating a line graph in jqplot

I have a piece of code here that should create a line graph consisting of two lines. It will not render the lines and neither the dates on the x-axis. The y-axis is apparently already scaled for the y-values, so the data interpretation went correctly for at least some of the data. Does anybody see... (0 Replies)
Discussion started by: figaro
0 Replies

6. Shell Programming and Scripting

Transposing X and Y axis of CSV data

Hello list, I have a source CSV data file as follows: PC_NAME,MS11-040,MS11-039,MS11-038,MS11-035 abc123,Not Applicable,Not Applicable,Not Applicable,Not Applicable abc987,Not Applicable,Not Applicable,Not Applicable,Not Applicable tnt999,Not Applicable,Not Applicable,Applicable,Not... (2 Replies)
Discussion started by: landossa
2 Replies

7. UNIX for Dummies Questions & Answers

GNUPLOT problem

Hi, Im trying to plot a time series with gnuplot. this is my script set xdata time set yrange set timefmt "%H" set xrange set format x "%H:%M:%S" plot "time_vs_times.txt" using 1:2 title 'Interarrival time' with points lw 2 and this is my data 11:14:18 5 11:14:19 10... (10 Replies)
Discussion started by: jamie_123
10 Replies

8. UNIX for Dummies Questions & Answers

sar Vs. gnuplot time format

Hi, I want to generate gnuplot graph from sar data. My problem is the time format. 1- Gnuplot doesn't support the sar format (01:00:59 AM/PM) 2- Sar doesn't provide a switch to choose the format. The only way to do it is by exporting LANG=fr_FR. Since I have other apps running and... (0 Replies)
Discussion started by: foxmtl
0 Replies

9. OS X (Apple)

Adjust X & Y screen axis

I'm using my wife's Macbook, and I just noticed that her screen is off axis, but I can't find a way to adjust it. I've tried playing around with resolution in preferences, but nothing. Maybe a terminal command for adjusting the x and y values of the screen? Any and all suggestions welcomed :) (2 Replies)
Discussion started by: andou
2 Replies
Login or Register to Ask a Question