Spent some time working with the Plotly Python API. Able to read my data logger files and upload to a plot with ease. Will need to comment code better I know…just started playing with it and wanted to share. Upload all environmental data and if the additional “Annotation” field exist add that to the plot as well.
More Info at: Plotly Python API
import plotly.plotly as py
from plotly.graph_objs import *
myname = 'plotlyid'
mykey = "plotlykey"
py.sign_in(myname,mykey)
x1 =[]
y1 =[]
y2 =[]
y3 =[]
MyAnnotation = []
f = open("LOGGER26.CSV",'r')
#f = open("smallset.csv",'r')
for lines in f:
data = lines.split(',')
x1.append(data[0])
y1.append(data[1])
y2.append(data[2])
y3.append(data[3].strip())
if len(data)==5:
print data[4]
Annotation = {'x':data[0],'y':data[1],'text':data[4] + data[0],'xref':'x','yref':'y','showarrow':True,'arrowhead':7,'bgcolor':'red'}
MyAnnotation.append(Annotation)
# (2) Make dictionary linking x and y coordinate lists to 'x' and 'y' keys
# (mandatory in plotly v.1.0.8 and up)
layout = Layout(
title="MyEnvi",
annotations=MyAnnotation,
legend=Legend(
x=100,
y=1
),
xaxis=XAxis(
domain=[0, 0.8],
autorange=True,
showgrid=False,
zeroline=False,
showline=True,
autotick=True,
ticks='',
showticklabels=True
),
yaxis=YAxis(
title="Light",
autorange=True,
showgrid=False,
zeroline=False,
showline=True,
autotick=True,
ticks='',
showticklabels=True
),
yaxis2=YAxis(
title='Barometric',
showgrid=False,
titlefont=Font(
color='#ff7f0e'
),
tickfont=Font(
color='#ff7f0e'
),
anchor='x',
overlaying='y',
side='right'
),
yaxis3=YAxis(
showgrid=False,
title='Temp',
titlefont=Font(
color='#087804'
),
tickfont=Font(
color='#087804'
),
anchor='free',
overlaying='y',
side='right',
position = .9
),
)
trace1 = dict(x=x1,y=y1, name='Light')
trace2 = dict(x=x1,y=y2, name= 'Barometric',yaxis='y2')
trace3 = dict(x=x1,y=y3, name='Temp',yaxis='y3')
# (3) Make list of 1 trace, to be sent to Plotly
# (mandatory in 1.0.8 and up)
data = [trace1,trace2,trace3]
fig = Figure(data=data,layout=layout)
plot_url = py.plot(fig, filename='MyEnvi')
f.close()
Short data file snippet:
2014-6-10 19:19:48,508,996.00,24.94
2014-6-10 19:19:49,508,995.95,24.94
2014-6-10 19:19:50,508,995.99,24.94
2014-6-10 19:19:51,508,995.95,24.92
2014-6-10 19:19:53,507,995.93,24.92,Migraine Severe
2014-6-10 19:19:54,507,995.99,24.94
2014-6-10 19:19:55,507,995.96,24.94
2014-6-10 19:19:56,507,996.00,24.92
2014-6-10 19:19:57,507,995.98,24.94
2014-6-10 19:19:58,507,995.97,24.92
2014-6-10 19:19:59,507,995.92,24.92
2014-6-10 19:20:0,507,995.92,24.92
Next steps: Create a way to add the annotation to the data file on the Arduino.