74 lines
2.8 KiB
Python
74 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]
|