def __init__(self, jsonObj): self.comment = jsonObj['comment'] self.xLabel = jsonObj['xLabel'] self.yLabel = jsonObj['yLabel'] self.type = GraphTypes[jsonObj['type']] self.defaultSeries = DefaultSeries( jsonObj=(None if 'seriesDefault' not in jsonObj else jsonObj['seriesDefault'])) self.series = [] seriesArray = jsonObj['series'] for item in seriesArray: if self.type is GraphTypes.CATEGORY: self.series.append(SeriesCategory(item, self.defaultSeries)) elif self.type is GraphTypes.XY: self.series.append(SeriesXy(item, self.defaultSeries)) elif self.type is GraphTypes.LOG: self.series.append(SeriesLog(item, self.defaultSeries)) else: raise RuntimeError('Unsupported series type.') self.plotlyLayout = { 'title': self.GetInGraphTitle(), 'legend': { 'orientation': 'h', 'y': -0.30 }, 'yaxis': { 'gridcolor': '#eee', 'title': self.yLabel }, 'xaxis': { 'gridcolor': '#eee', 'title': self.xLabel, 'type': self.type.plotyType }, 'width': 600, 'height': 350, 'margin': { 'l': 0, 'r': 0, 't': 50, 'b': 0 }, 'plot_bgcolor': '#fff' } if 'PlotlyLayout' in jsonObj: ConfigParser.RecursiveUpdateDict(self.plotlyLayout, jsonObj['PlotlyLayout'])
def GetScatter(self, sqlEngine, idx, markerSym=None): if markerSym is None and idx >= len(PLOTY_MARKER_SELECTED_SYMBOLS): raise RuntimeError( 'The number of series is more than the selected marker symbols' ) markerSym = markerSym if markerSym is not None else PLOTY_MARKER_SELECTED_SYMBOLS[ idx] midXY = self.GetMidXY(sqlEngine) errorXY = self.GetPlotyErrorXY(sqlEngine) scatter = {} if 'X' in errorXY and 'Y' in errorXY: scatter = { 'name': self.name, 'mode': 'lines+markers', 'marker': { 'symbol': markerSym, 'size': 13 }, 'x': midXY['X'], 'y': midXY['Y'], 'error_x': errorXY['X'], 'error_y': errorXY['Y'] } elif 'X' in errorXY: scatter = { 'name': self.name, 'mode': 'lines+markers', 'marker': { 'symbol': markerSym, 'size': 13 }, 'x': midXY['X'], 'y': midXY['Y'], 'error_x': errorXY['X'] } elif 'Y' in errorXY: scatter = { 'name': self.name, 'mode': 'lines+markers', 'marker': { 'symbol': markerSym, 'size': 13 }, 'x': midXY['X'], 'y': midXY['Y'], 'error_y': errorXY['Y'] } else: scatter = { 'name': self.name, 'mode': 'lines+markers', 'marker': { 'symbol': markerSym, 'size': 13 }, 'x': midXY['X'], 'y': midXY['Y'] } ConfigParser.RecursiveUpdateDict(scatter, self.plotlyLayoutUpt) return go.Scatter(**scatter)