5
import wrowser.Configuration as simDbConf
6
import wrowser.simdb.Database as simDb
7
from wrowser.simdb.Campaigns import setCampaign as simDbSetCampaign
9
from wrowser.probeselector import PostgresReader
10
from wrowser.probeselector import Interface
11
from wrowser.probeselector import Representations
12
from wrowser.probeselector import Errors
13
from wrowser.probeselector.Interface import Facade
15
from matplotlib import rc
16
from matplotlib.figure import Figure
17
from matplotlib.backends.backend_pdf import FigureCanvasPdf as FigureCanvas
18
from matplotlib.font_manager import FontProperties
21
from scipy.special import erf
23
def loadCampaignAndPlotGraphs(PlotParameters):
26
for style in PlotParameters.color_sytles :
31
for style in PlotParameters.bw_styles :
36
for hatch in ['/','\\','|','-','+','x','.','//','\\' ]:
40
dbConfig = simDbConf.Configuration()
42
simDb.Database.connectConf(dbConfig)
43
simDbSetCampaign([int(PlotParameters.campaignId)])
44
campaignReader = PostgresReader.CampaignReader(int(PlotParameters.campaignId), Interface.DoNotSelectProbeSelectUI())
45
print 'Accessing charts from database server with campaignId: ' + str(PlotParameters.campaignId)
48
print "Reading Campaign"
49
campaign = Representations.Campaign(*campaignReader.read())
50
print "Creating Facade:",
51
ch = Interface.Facade(campaign)
55
if not os.path.exists(outputdir) :
56
os.makedirs(outputdir)
58
font = FontProperties()
59
font.set_size('x-large')
61
filteredFacade = ch.filteredByExpression(PlotParameters.filterExpression)
62
print "Found " + str(len(filteredFacade.getScenarios())) + " scenarios"
64
figure(figsize=(9, 8))
66
xlabel(PlotParameters.xLabel,fontproperties = font)
67
ylabel(PlotParameters.yLabel,fontproperties = font)
71
if PlotParameters.color:
78
if PlotParameters.type == 'Param':
79
if PlotParameters.useXProbe:
80
graphList = filteredFacade.getGraphs(PlotParameters.parameterName, PlotParameters.probeName, PlotParameters.probeEntry, PlotParameters.aggrParam, PlotParameters.confidence, PlotParameters.confidenceLevel, plotNotAggregatedGraphs=PlotParameters.originalPlots, useXProbe = PlotParameters.useXProbe, xProbeName = PlotParameters.xProbeName, xProbeEntry = PlotParameters.xProbeEntry)
82
graphList = filteredFacade.getGraphs(PlotParameters.parameterName, PlotParameters.probeName, PlotParameters.probeEntry, PlotParameters.aggrParam, PlotParameters.confidence, PlotParameters.confidenceLevel, plotNotAggregatedGraphs=PlotParameters.originalPlots)
84
graphList = filteredFacade.getHistograms( PlotParameters.probeName, PlotParameters.type, PlotParameters.aggrParam, plotNotAggregatedGraphs=PlotParameters.originalPlots) #, PlotParameters.aggrParam, PlotParameters.confidence)
85
except Errors.MultipleErrors, e:
90
print "no graphs to plot"
91
for graphNum in PlotParameters.plotOrder :
92
graph = graphList[graphNum]
93
labels.append(str(graph.sortkey))
98
print "You need to define more linestyles or reduce the number of plotted graphs"
100
X=[x for x,y in graph.points]
101
Y=[y*PlotParameters.scaleFactorY+PlotParameters.moveY for x,y in graph.points]
102
key = Facade.getGraphDescription(graph) #PlotParameters.legendLabelMapping.keys()[i]
103
plot([x*PlotParameters.scaleFactorX+PlotParameters.moveX for x in X ], Y , style , label=PlotParameters.legendLabelMapping[key], marker=PlotParameters.marker)
105
if PlotParameters.type == 'Param':
106
if PlotParameters.confidence :
107
for i in range(len(X)):
108
e = graph.confidenceIntervalDict[X[i]]
109
errorbar(X[i]*PlotParameters.scaleFactorX+PlotParameters.moveX, Y[i], yerr=e , fmt=style)
112
for additional in PlotParameters.additional_plots :
113
plot(additional['x'], additional['y'] , additional['style'] , label=additional['label'])
115
if PlotParameters.doClip:
116
axis([PlotParameters.minX,PlotParameters.maxX,PlotParameters.minY,PlotParameters.maxY])
117
scalex = PlotParameters.scale[0]
118
scaley = PlotParameters.scale[2]
119
if scalex != 'linear' :
120
xbase = PlotParameters.scale[1]
121
xscale('log',basex=xbase)
122
if scaley != 'linear' :
123
ybase= PlotParameters.scale[3]
124
yscale('log',basey=ybase)
126
if PlotParameters.showTitle :
127
title(PlotParameters.figureTitle)
128
if PlotParameters.legend:
129
legend(prop = font, loc=PlotParameters.legendPosition) # (0.9, 0.01))
130
print 'Plotting: ',PlotParameters.fileName
131
savefig(os.path.join(outputdir, PlotParameters.fileName+'.pdf'))
132
savefig(os.path.join(outputdir, PlotParameters.fileName+'.png'))