codekasten/PGAss/gnuPlotData.py

75 lines
2.8 KiB
Python

class PlotData:
'holds the data for gnuplot'
""" order of values in gnuplotdata is important!
0:title 1:datastyle 2:seconds 3:filename 4:readdata
5:labelx 6:labely"""
gnuplotdata = ['','','','','','','','']
""" order of values in gnuplotcheckboxes is important!
0:reread, 1:autoscale, 2:grid, 3:key, 4:logx, 5:logy """
gnuplotcheckboxes = ['','','','','','']
# valuepairs; if no second option, leave empty ['foo', '']
# TODO: put this in an extra ascii file
cb_possibilities = [['\nreread',''],['\nset autoscale',''], \
['\nset grid','\nset nogrid'],['\nset key','\nset nokey'], \
['\nset logscale x','\nset nologscale x'], \
['\nset logscale y','\nset nologscale y']]
## this is for testing only..
comment = "\n# ___insert your plot here___ "\
"\n#e.g.: plot \"mydata.file\" using 2:5 "
##
def __init__(self):
pass
def get_all_values(self):
return self.gnuplotdata
def set_important_values(self, a,b,c,d,e,f,g):
self.gnuplotdata = [a,b,c,d,e,f,g]
#print self.gnuplotdata
def set_checkbox_values(self, a,b,c,d,e,f):
self.gnuplotcheckboxes = [a,b,c,d,e,f]
#print self.gnuplotcheckboxes
self.__interpret_cb_values()
#print self.gnuplotcheckboxes
def write_tofile(self):
'write all options to the specified file'
### uncomment the following lines to deny file overwriting !!
#import os
#if os.path.exists(self.gnuplotdata[3]):
#return "file exists! cowardly refusing to write"
###
try:
gnuplotfile = open(self.gnuplotdata[3],'w')
except:
return "could NOT write to "+self.gnuplotdata[3]
gnuplotfile.write("set title \""+self.gnuplotdata[0]+"\";")
gnuplotfile.write("\nset data style "+self.gnuplotdata[1]+";")
gnuplotfile.write("\nset xlabel \""+self.gnuplotdata[5]+"\";")
gnuplotfile.write("\nset ylabel \""+self.gnuplotdata[6]+"\";")
# don't print first element (reread)
for element in range(len(self.gnuplotcheckboxes)-1):
gnuplotfile.write(self.gnuplotcheckboxes[element+1])
### plot command
self.plot = "\nplot \""+self.gnuplotdata[4]+"\" every 2::0 using 7 smooth unique title 'Fensterbank' , \""+self.gnuplotdata[4]+"\" every 2::1 using 7 smooth unique title'Kernschmelze'"
###
gnuplotfile.write(self.comment)
gnuplotfile.write(self.plot)
gnuplotfile.write("\npause "+self.gnuplotdata[2])
# reread option is always printed at the end
gnuplotfile.write(self.gnuplotcheckboxes[0])
gnuplotfile.close()
return "successfully written to "+ self.gnuplotdata[3]
### private functions
def __interpret_cb_values(self):
'test if a setting is checked, if so then write the \
responding option in gnuplotcheckboxes'
for xxx in range(len(self.gnuplotcheckboxes)):
if self.gnuplotcheckboxes[xxx]:
self.gnuplotcheckboxes[xxx] = self.cb_possibilities[xxx][0]
else:
self.gnuplotcheckboxes[xxx] = self.cb_possibilities[xxx][1]