Hoping to get assistance.
Mostly using matplotlib.
the list FullSpreadsheet is able to be printed and works quite well.
we are trying to split FullSpreadsheet, by means of
but when attempting to plot that data, we receive the "TypeError: list indices must be integers, not str" Errors.
I will attach our FULL code, and the FULL file it is meant to iterate over.
i have no idea why i cant get the TransSpreadsheet or ReflSpreadsheet to be properly utilize-able...
note: had to change the file to a .txt due to forum limitations...
Mostly using matplotlib.
the list FullSpreadsheet is able to be printed and works quite well.
we are trying to split FullSpreadsheet, by means of
Code:
for element in FullSpreadsheet:
if element['mode'][1] == 'T':
TransSpreadsheet.append(s)
elif element['mode'][1] == 'R':
ReflSpreadsheet.append(s)
but when attempting to plot that data, we receive the "TypeError: list indices must be integers, not str" Errors.
I will attach our FULL code, and the FULL file it is meant to iterate over.
Code:
#!/usr/bin/python2.6
import numpy as np
import os
import csv
import math
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.ticker as mticker
import matplotlib.font_manager
from matplotlib.dates import date2num,MonthLocator,DayLocator,HourLocator,DateFormatter
fig = plt.figure()
ax = fig.add_subplot(111)
loadfrom = '\\\\IRWiki\\share-IRWiki\\SigNoiseSpreadsheet.csv'
saveto = '\\\\IRWiki\\share-IRWiki\\XY Merged.png'
savetransto = '\\\\IRWiki\\share-IRWiki\\XY Transmission.png'
savereflto = '\\\\IRWiki\\share-IRWiki\\XY Reflectance.png'
FullSpreadsheet=mlab.csv2rec(loadfrom,delimiter=',')
TransSpreadsheet = []
ReflSpreadsheet = []
for element in FullSpreadsheet:
if element['mode'][1] == 'T':
TransSpreadsheet.append(s)
elif element['mode'][1] == 'R':
ReflSpreadsheet.append(s)
print TransSpreadsheet
ax.plot(TransSpreadsheet['date'], TransSpreadsheet['ycalibration'], '-o', ms=6, lw=2, alpha=0.7, mfc='orange', label='Y Calibration')
ax.plot(TransSpreadsheet['date'], TransSpreadsheet['xcalibration'], '-o', ms=6, lw=2, alpha=0.7, mfc='red', label='X Calibration')
ax.set_xlabel('Date (month - day)')
ax.set_ylabel('Calibration (mm)')
ax.set_title('MidIR XY-Mirror Calibration vs Time')
#to allow for plotting 'over' empty cells, the [np.isfinite(referencevalue)] item is used.
#ax.plot(FullSpreadsheet['date'][np.isfinite(FullSpreadsheet['ycalibration'])], FullSpreadsheet['ycalibration'][np.isfinite(data['ycalibration'])], '-o', ms=6, lw=2, alpha=0.7, mfc='orange', label='Y Calibration')
#ax.plot(FullSpreadsheet['date'][np.isfinite(FullSpreadsheet['xcalibration'])], FullSpreadsheet['xcalibration'][np.isfinite(data['xcalibration'])], '-o', ms=6, lw=2, alpha=0.7, mfc='red', label='X Calibration')
# format the ticks
days=DayLocator(interval=2) #major ticks will be on every second day of the month
hours=HourLocator(interval=8) #minor ticks will be every 8 hours
ax.xaxis.set_major_locator(days) # major x-axis tick every 2 days
ax.xaxis.set_major_formatter(DateFormatter('%m-%d')) #x-axis major tick labels
ax.xaxis.set_minor_locator(hours) #minor x-axis ticks every 8 hours
ax.fmt_xdata = DateFormatter('%m-%d')
fig.autofmt_xdate(rotation=-90, ha='left') #rotate and right align the xaxis labels
ax.yaxis.set_major_locator(mticker.MultipleLocator(base=1.0))
ax.yaxis.set_minor_locator(mticker.MultipleLocator(base=0.25))
plt.legend(loc='best', prop=matplotlib.font_manager.FontProperties(size=8))
#prop sets the font size of the legend
ax.grid() #turns on the graph grid
fig.savefig(saveto)
#opens the output image in its default image viewing program.
os.startfile(saveto)
ax.plot(TransSpreadsheet['date'][np.isfinite(TransSpreadsheet['ycalibration'])], TransSpreadsheet['ycalibration'][np.isfinite(TransSpreadsheet['ycalibration'])], '-o', ms=6, lw=2, alpha=0.7, mfc='orange', label='Y Calibration')
ax.plot(TransSpreadsheet['date'][np.isfinite(TransSpreadsheet['xcalibration'])], TransSpreadsheet['xcalibration'][np.isfinite(TransSpreadsheet['xcalibration'])], '-o', ms=6, lw=2, alpha=0.7, mfc='red', label='X Calibration')
# format the ticks
days=DayLocator(interval=2) #major ticks will be on every second day of the month
hours=HourLocator(interval=8) #minor ticks will be every 8 hours
ax.xaxis.set_major_locator(days) # major x-axis tick every 2 days
ax.xaxis.set_major_formatter(DateFormatter('%m-%d')) #x-axis major tick labels
ax.xaxis.set_minor_locator(hours) #minor x-axis ticks every 8 hours
ax.fmt_xdata = DateFormatter('%m-%d')
fig.autofmt_xdate(rotation=-90, ha='left') #rotate and right align the xaxis labels
ax.yaxis.set_major_locator(mticker.MultipleLocator(base=1.0))
ax.yaxis.set_minor_locator(mticker.MultipleLocator(base=0.25))
plt.legend(loc='best', prop=matplotlib.font_manager.FontProperties(size=8))
#prop sets the font size of the legend
ax.grid() #turns on the graph grid
fig.savefig(savetransto)
ax.plot(ReflSpreadsheet['date'][np.isfinite(ReflSpreadsheet['ycalibration'])], ReflSpreadsheet['ycalibration'][np.isfinite(ReflSpreadsheet['ycalibration'])], '-o', ms=6, lw=2, alpha=0.7, mfc='orange', label='Y Calibration')
ax.plot(ReflSpreadsheet['date'][np.isfinite(ReflSpreadsheet['xcalibration'])], ReflSpreadsheet['xcalibration'][np.isfinite(ReflSpreadsheet['xcalibration'])], '-o', ms=6, lw=2, alpha=0.7, mfc='red', label='X Calibration')
# format the ticks
days=DayLocator(interval=2) #major ticks will be on every second day of the month
hours=HourLocator(interval=8) #minor ticks will be every 8 hours
ax.xaxis.set_major_locator(days) # major x-axis tick every 2 days
ax.xaxis.set_major_formatter(DateFormatter('%m-%d')) #x-axis major tick labels
ax.xaxis.set_minor_locator(hours) #minor x-axis ticks every 8 hours
ax.fmt_xdata = DateFormatter('%m-%d')
fig.autofmt_xdate(rotation=-90, ha='left') #rotate and right align the xaxis labels
ax.yaxis.set_major_locator(mticker.MultipleLocator(base=1.0))
ax.yaxis.set_minor_locator(mticker.MultipleLocator(base=0.25))
plt.legend(loc='best', prop=matplotlib.font_manager.FontProperties(size=8))
#prop sets the font size of the legend
ax.grid() #turns on the graph grid
fig.savefig(savereflto)
#if you get a really odd graph with non-linear lines, you probably imported the .csv file into excel
#and it most likely destroyed your date formatting....
i have no idea why i cant get the TransSpreadsheet or ReflSpreadsheet to be properly utilize-able...
note: had to change the file to a .txt due to forum limitations...