def __init__(self, data=None, legend_data=None): Drawing.__init__(self, width=530, height=160) self._add(self, MyChartFrame(x=0, y=0, width=530, height=160, title='Volume'), name='frame') # chart self._add(self, LinePlot(), name='chart') self.chart.y = 20 self.chart.x = 34 self.chart.width = 423 self.chart.height = 110 # line styles self.chart.lines.symbol = makeMarker('Circle', size=2) colors = map(toColor, get_n_random_colors(len(legend_data))) for (i, _) in enumerate(legend_data): self.chart.lines[i].strokeColor = colors[i] # x axis self.chart.xValueAxis = NormalDateXValueAxis() self.chart.xValueAxis.xLabelFormat = '{dd} {MMM}' self.chart.xValueAxis.loLLen = 8 self.chart.xValueAxis.hiLLen = 5 self.chart.xValueAxis.labels.fontName = 'Lato' self.chart.xValueAxis.labels.fontSize = 9 # y axis self.chart.yValueAxis = YValueAxis() self.chart.yValueAxis.visibleGrid = 1 self.chart.yValueAxis.visibleAxis = 0 self.chart.yValueAxis.strokeWidth = 0.25 self.chart.yValueAxis.labels.rightPadding = 5 self.chart.yValueAxis.labels.fontName = 'Lato' self.chart.yValueAxis.labels.fontSize = 9 self.chart.yValueAxis.rangeRound = 'both' self.chart.yValueAxis.tickLeft = 7.5 self.chart.yValueAxis.minimumTickSpacing = 0.5 self.chart.yValueAxis.maximumTicks = 8 self.chart.yValueAxis.avoidBoundFrac = 0.1 # legend self._add(self, LineLegend(), name='legend') self.legend.alignment = 'right' self.legend.y = 110 self.legend.x = 462 self.legend.dxTextSpace = 5 self.legend.columnMaximum = 4 self.legend.fontName = 'Lato' self.legend.fontSize = 9 self.legend.colorNamePairs = zip(colors, legend_data) # Data... self.chart.data = data
def __init__(self): AreaLinePlot.__init__(self) self.xValueAxis = NormalDateXValueAxis() self.yValueAxis = AdjYValueAxis() self.data=[(20030601,0.95,0.05,0.0),(20030701,0.95,0.05,0.0),(20030801,0.95,0.05,0.0),(20030901,0.95,0.05,0.0),(20031001,0.95,0.05,0.0),(20031101,0.95,0.05,0.0),(20031201,0.95,0.05,0.0),(20040101,0.95,0.05,0.0),(20040201,0.95,0.05,0.0),(20040301,0.95,0.05,0.0),(20040401,0.95,0.05,0.0),(20040501,0.95,0.05,0.0),(20040601,0.95,0.05,0.0),(20040701,0.95,0.05,0.0),(20040801,0.95,0.05,0.0),(20040901,0.95,0.05,0.0),(20041001,0.95,0.05,0.0),(20041101,0.95,0.05,0.0),(20041201,0.95,0.05,0.0),(20050101,0.95,0.05,0.0),(20050201,0.95,0.05,0.0),(20050301,0.95,0.05,0.0),(20050401,0.95,0.05,0.0),(20050501,0.95,0.05,0.0),(20050601,0.95,0.05,0.0),(20050701,0.95,0.05,0.0),(20050801,0.95,0.05,0.0),(20050901,0.95,0.05,0.0),(20051001,0.95,0.05,0.0),(20051101,0.95,0.05,0.0),(20051201,0.95,0.05,0.0),(20060101,0.95,0.05,0.0),(20060201,0.95,0.05,0.0),(20060301,0.95,0.05,0.0),(20060401,0.95,0.05,0.0),(20060501,0.95,0.05,0.0),(20060601,0.95,0.05,0.0),(20060701,0.95,0.05,0.0),(20060801,0.95,0.05,0.0),(20060901,0.95,0.05,0.0),(20061001,0.95,0.05,0.0),(20061101,0.95,0.05,0.0),(20061201,0.95,0.05,0.0),(20070101,0.95,0.05,0.0),(20070201,0.95,0.05,0.0),(20070301,0.95,0.05,0.0),(20070401,0.95,0.05,0.0),(20070501,0.95,0.05,0.0),(20070601,0.95,0.05,0.0),(20070701,0.95,0.05,0.0),(20070801,0.95,0.05,0.0),(20070901,0.95,0.05,0.0),(20071001,0.95,0.05,0.0),(20071101,0.95,0.05,0.0),(20071201,0.95,0.05,0.0),(20080101,0.95,0.05,0.0),(20080201,0.95,0.05,0.0),(20080301,0.95,0.05,0.0),(20080401,0.95,0.05,0.0),(20080501,0.95,0.05,0.0),(20080601,0.95,0.05,0.0),(20080701,0.95,0.05,0.0),(20080801,0.95,0.05,0.0),(20080901,0.95,0.05,0.0),(20081001,0.95,0.05,0.0),(20081101,0.95,0.05,0.0),(20081201,0.95,0.05,0.0),(20090101,0.95,0.05,0.0),(20090201,0.91,0.09,0.0),(20090301,0.91,0.09,0.0),(20090401,0.91,0.09,0.0),(20090501,0.91,0.09,0.0),(20090601,0.91,0.09,0.0),(20090701,0.91,0.09,0.0),(20090801,0.91,0.09,0.0),(20090901,0.91,0.09,0.0),(20091001,0.91,0.09,0.0),(20091101,0.91,0.09,0.0),(20091201,0.91,0.09,0.0),(20100101,0.91,0.09,0.0),(20100201,0.81,0.19,0.0),(20100301,0.81,0.19,0.0),(20100401,0.81,0.19,0.0),(20100501,0.81,0.19,0.0),(20100601,0.81,0.19,0.0),(20100701,0.81,0.19,0.0),(20100801,0.81,0.19,0.0),(20100901,0.81,0.19,0.0),(20101001,0.81,0.19,0.0),(20101101,0.81,0.19,0.0),(20101201,0.81,0.19,0.0),(20110101,0.81,0.19,0.0),(20110201,0.72,0.28,0.0),(20110301,0.72,0.28,0.0),(20110401,0.72,0.28,0.0),(20110501,0.72,0.28,0.0),(20110601,0.72,0.28,0.0),(20110701,0.72,0.28,0.0),(20110801,0.72,0.28,0.0),(20110901,0.72,0.28,0.0),(20111001,0.72,0.28,0.0),(20111101,0.72,0.28,0.0),(20111201,0.72,0.28,0.0),(20120101,0.72,0.28,0.0),(20120201,0.53,0.47,0.0),(20120301,0.53,0.47,0.0),(20120401,0.53,0.47,0.0),(20120501,0.53,0.47,0.0),(20120601,0.53,0.47,0.0),(20120701,0.53,0.47,0.0),(20120801,0.53,0.47,0.0),(20120901,0.53,0.47,0.0),(20121001,0.53,0.47,0.0),(20121101,0.53,0.47,0.0),(20121201,0.53,0.47,0.0),(20130101,0.53,0.47,0.0),(20130201,0.44,0.56,0.0),(20130301,0.44,0.56,0.0),(20130401,0.44,0.56,0.0),(20130501,0.44,0.56,0.0),(20130601,0.44,0.56,0.0),(20130701,0.44,0.56,0.0),(20130801,0.44,0.56,0.0),(20130901,0.44,0.56,0.0),(20131001,0.44,0.56,0.0),(20131101,0.44,0.56,0.0),(20131201,0.44,0.56,0.0),(20140101,0.44,0.56,0.0),(20140201,0.36,0.5,0.14),(20140301,0.36,0.5,0.14),(20140401,0.36,0.5,0.14),(20140501,0.36,0.5,0.14),(20140601,0.36,0.5,0.14),(20140701,0.36,0.5,0.14),(20140801,0.36,0.5,0.14),(20140901,0.36,0.5,0.14),(20141001,0.36,0.5,0.14),(20141101,0.36,0.5,0.14),(20141201,0.36,0.5,0.14),(20150101,0.36,0.5,0.14),(20150201,0.3,0.41,0.29),(20150301,0.3,0.41,0.29),(20150401,0.3,0.41,0.29),(20150501,0.3,0.41,0.29),(20150601,0.3,0.41,0.29),(20150701,0.3,0.41,0.29),(20150801,0.3,0.41,0.29),(20150901,0.3,0.41,0.29),(20151001,0.3,0.41,0.29),(20151101,0.3,0.41,0.29),(20151201,0.3,0.41,0.29),(20160101,0.3,0.41,0.29),(20160201,0.26,0.36,0.38),(20160301,0.26,0.36,0.38),(20160401,0.26,0.36,0.38),(20160501,0.26,0.36,0.38),(20160601,0.26,0.36,0.38),(20160701,0.26,0.36,0.38),(20160801,0.26,0.36,0.38),(20160901,0.26,0.36,0.38),(20161001,0.26,0.36,0.38),(20161101,0.26,0.36,0.38),(20161201,0.26,0.36,0.38),(20170101,0.26,0.36,0.38),(20170201,0.2,0.3,0.5),(20170301,0.2,0.3,0.5),(20170401,0.2,0.3,0.5),(20170501,0.2,0.3,0.5),(20170601,0.2,0.3,0.5),(20170701,0.2,0.3,0.5),(20170801,0.2,0.3,0.5),(20170901,0.2,0.3,0.5),(20171001,0.2,0.3,0.5),(20171101,0.2,0.3,0.5),(20171201,0.2,0.3,0.5),(20180101,0.2,0.3,0.5),(20180201,0.13,0.37,0.5),(20180301,0.13,0.37,0.5),(20180401,0.13,0.37,0.5),(20180501,0.13,0.37,0.5),(20180601,0.13,0.37,0.5),(20180701,0.13,0.37,0.5),(20180801,0.13,0.37,0.5),(20180901,0.13,0.37,0.5),(20181001,0.13,0.37,0.5),(20181101,0.13,0.37,0.5),(20181201,0.13,0.37,0.5),(20190101,0.13,0.37,0.5),(20190201,0.1,0.4,0.5),(20190301,0.1,0.4,0.5),(20190401,0.1,0.4,0.5),(20190501,0.1,0.4,0.5),(20190601,0.1,0.4,0.5),(20190701,0.1,0.4,0.5),(20190801,0.1,0.4,0.5),(20190901,0.1,0.4,0.5),(20191001,0.1,0.4,0.5),(20191101,0.1,0.4,0.5),(20191201,0.1,0.4,0.5),(20200101,0.1,0.4,0.5)] self.yValueAxis.requiredRange = None self.yValueAxis.leftAxisPercent = 0 self.yValueAxis.leftAxisOrigShiftMin = 0 self.yValueAxis.leftAxisOrigShiftIPC = 0 self.lines[0].strokeColor = colors.toColor(0x0033cc) self.lines[1].strokeColor = colors.toColor(0x99c3ff) self.lines[2].strokeColor = colors.toColor(0xCC0033)
def __init__(self): from reportlab.lib import colors LinePlot.__init__(self) self.xValueAxis = NormalDateXValueAxis() self.yValueAxis = AdjYValueAxis() self.scaleFactor = None self.background = Grid() self.background.orientation = 'horizontal' self.background.useRects = 0 self.background.useLines = 1 self.background.strokeWidth = 0.5 self.background.strokeColor = colors.black self.data = _monthlyIndexData
def __init__(self, data=None): Drawing.__init__(self, width=458, height=130) # chart self._add(self, LinePlot(), name='chart') self.chart.y = 20 self.chart.x = 60 self.chart.width = 320 self.chart.height = 100 # line styles self.chart.lines.symbol = makeMarker('Circle', size=2) colors = map(toColor, get_n_random_colors(len(data))) for (i, _) in enumerate(data): self.chart.lines[i].strokeColor = colors[i] # x axis self.chart.xValueAxis = NormalDateXValueAxis() self.chart.xValueAxis.xLabelFormat = '{dd} {MMM}' self.chart.xValueAxis.loLLen = 8 self.chart.xValueAxis.hiLLen = 5 self.chart.xValueAxis.labels.fontName = 'Lato' self.chart.xValueAxis.labels.fontSize = 9 # y axis self.chart.yValueAxis = YValueAxis() self.chart.yValueAxis.visibleGrid = 1 self.chart.yValueAxis.visibleAxis = 0 self.chart.yValueAxis.strokeWidth = 0.25 self.chart.yValueAxis.labels.rightPadding = 5 self.chart.yValueAxis.labels.fontName = 'Lato' self.chart.yValueAxis.labels.fontSize = 9 self.chart.yValueAxis.rangeRound = 'both' self.chart.yValueAxis.tickLeft = 7.5 self.chart.yValueAxis.minimumTickSpacing = 0.5 self.chart.yValueAxis.maximumTicks = 8 self.chart.yValueAxis.avoidBoundFrac = 0.1 # Data... self.chart.data = data
def __init__(self): LinePlot.__init__(self) self.xValueAxis = NormalDateXValueAxis() self.yValueAxis = YValueAxis() self.data = _monthlyIndexData
# Create the drawing and the lineplot drawing = Drawing(400, 200) lp = LinePlot() lp.x = 50 lp.y = 50 lp.height = 125 lp.width = 300 lp._inFill = 1 lp.data = result for i in range(len(result)): lp.lines[i].strokeColor = colors.toColor('hsl(%s,80%%,40%%)' % (i * 60)) fontName = 'Helvetica' fontSize = 7 lp.xValueAxis = NormalDateXValueAxis() lp.xValueAxis.labels.fontName = fontName lp.xValueAxis.labels.fontSize = fontSize - 1 lp.xValueAxis.forceEndDate = 1 lp.xValueAxis.forceFirstDate = 1 lp.xValueAxis.labels.boxAnchor = 'autox' lp.xValueAxis.xLabelFormat = '{d}-{MMM}' lp.xValueAxis.maximumTicks = 5 lp.xValueAxis.minimumTickSpacing = 0.5 lp.xValueAxis.niceMonth = 0 lp.xValueAxis.strokeWidth = 1 lp.xValueAxis.loLLen = 5 lp.xValueAxis.hiLLen = 5 # lp.xValueAxis.gridEnd = self.width # lp.xValueAxis.gridStart = self.chart.x-10
drawing = Drawing(400, 200) # chart my_colors = PCMYKColor(50, 0, 100, 20, alpha=40), PCMYKColor( 0, 100, 100, 40), PCMYKColor(100, 0, 90, 50), PCMYKColor(0, 0, 0, 40), PCMYKColor( 10, 0, 100, 11), PCMYKColor(15, 0, 0, 0), PCMYKColor(0, 0, 0, 50) lp = LinePlot() lp.x = 0 lp.y = 0 lp.width = 400 lp.height = 120 lp.lines[0].inFill = True lp.lines[0].strokeColor = my_colors[0] # x axis lp.xValueAxis = NormalDateXValueAxis() # we change the axis type here lp.xValueAxis.bottomAxisLabelSlack = 0 lp.xValueAxis.dailyFreq = 0 lp.xValueAxis.forceEndDate = True lp.xValueAxis.forceFirstDate = True lp.xValueAxis.gridEnd = 0 lp.xValueAxis.gridStart = 0 lp.xValueAxis.gridStrokeWidth = 1 lp.xValueAxis.joinAxisMode = 'bottom' lp.xValueAxis.labels.angle = 30 lp.xValueAxis.labels.boxAnchor = 'e' lp.xValueAxis.labels.dx = -2 lp.xValueAxis.labels.dy = -10 lp.xValueAxis.labels.fontName = 'Times-Roman' lp.xValueAxis.labels.fontSize = 10 lp.xValueAxis.maximumTicks = 13
def drawsystemdailyefficiency(can, resultsbuffer): can.setFont("Helvetica", 24) sec_title = "Chiller Plant System Daily Efficiency" can.drawString(25, 750, sec_title) desc_text = "The chiller plant system daily efficiency demonstrates the total efficiency including every" \ " parts of the system across a series of days. The range can be by default (say, 2 days) or" \ " specified by administrators." stylesheet = getSampleStyleSheet() paragraph = Paragraph(desc_text, stylesheet['Normal']) aW, aH = 500, 600 w, h = paragraph.wrap(aW, aH) if w <= aW and h <= aH: paragraph.drawOn(can, 25, 700) # Draw the chart drawing = Drawing(600, 400) # font fontName = 'Helvetica' fontSize = 7 # chart lp = LinePlot() lp.y = 16 lp.x = 32 lp.width = 400 lp.height = 200 # line styles lp.lines.strokeWidth = 0 lp.lines.symbol = makeMarker('FilledSquare') # x axis lp.xValueAxis = NormalDateXValueAxis() lp.xValueAxis.labels.fontName = fontName lp.xValueAxis.labels.fontSize = fontSize - 1 lp.xValueAxis.forceEndDate = 1 lp.xValueAxis.forceFirstDate = 1 lp.xValueAxis.labels.boxAnchor = 'autox' lp.xValueAxis.xLabelFormat = '{d}-{MMM}' lp.xValueAxis.maximumTicks = 5 lp.xValueAxis.minimumTickSpacing = 0.5 lp.xValueAxis.niceMonth = 0 lp.xValueAxis.strokeWidth = 1 lp.xValueAxis.loLLen = 5 lp.xValueAxis.hiLLen = 5 lp.xValueAxis.gridEnd = drawing.width lp.xValueAxis.gridStart = lp.x - 10 # y axis # self.chart.yValueAxis = AdjYValueAxis() lp.yValueAxis.visibleGrid = 1 lp.yValueAxis.visibleAxis = 0 lp.yValueAxis.labels.fontName = fontName lp.yValueAxis.labels.fontSize = fontSize - 1 lp.yValueAxis.labelTextFormat = '%0.2f%%' lp.yValueAxis.strokeWidth = 0.25 lp.yValueAxis.visible = 1 lp.yValueAxis.labels.rightPadding = 5 # self.chart.yValueAxis.maximumTicks = 6 lp.yValueAxis.rangeRound = 'both' lp.yValueAxis.tickLeft = 7.5 lp.yValueAxis.minimumTickSpacing = 0.5 lp.yValueAxis.maximumTicks = 8 lp.yValueAxis.forceZero = 0 lp.yValueAxis.avoidBoundFrac = 0.1 # legend ll = LineLegend() ll.fontName = fontName ll.fontSize = fontSize ll.alignment = 'right' ll.dx = 5 # sample data lp.data = [[(19010706, 3.3900000000000001), (19010806, 3.29), (19010906, 3.2999999999999998), (19011006, 3.29), (19011106, 3.3399999999999999), (19011206, 3.4100000000000001), (19020107, 3.3700000000000001), (19020207, 3.3700000000000001), (19020307, 3.3700000000000001), (19020407, 3.5), (19020507, 3.6200000000000001), (19020607, 3.46), (19020707, 3.3900000000000001)], [(19010706, 3.2000000000000002), (19010806, 3.1200000000000001), (19010906, 3.1400000000000001), (19011006, 3.1400000000000001), (19011106, 3.1699999999999999), (19011206, 3.23), (19020107, 3.1899999999999999), (19020207, 3.2000000000000002), (19020307, 3.1899999999999999), (19020407, 3.3100000000000001), (19020507, 3.4300000000000002), (19020607, 3.29), (19020707, 3.2200000000000002)]] lp.lines[0].strokeColor = PCMYKColor(0, 100, 100, 40, alpha=100) lp.lines[1].strokeColor = PCMYKColor(100, 0, 90, 50, alpha=100) lp.xValueAxis.strokeColor = PCMYKColor(100, 60, 0, 50, alpha=100) ll.colorNamePairs = [(PCMYKColor(0, 100, 100, 40, alpha=100), '01-Mar-2017'), (PCMYKColor(100, 0, 90, 50, alpha=100), '02-Mar-2017')] lp.lines.symbol.x = 0 lp.lines.symbol.strokeWidth = 0 lp.lines.symbol.arrowBarbDx = 5 lp.lines.symbol.strokeColor = PCMYKColor(0, 0, 0, 0, alpha=100) lp.lines.symbol.fillColor = None lp.lines.symbol.arrowHeight = 5 ll.dxTextSpace = 7 ll.boxAnchor = 'nw' ll.subCols.dx = 0 ll.subCols.dy = -2 ll.subCols.rpad = 0 ll.columnMaximum = 1 ll.deltax = 1 ll.deltay = 0 ll.dy = 5 ll.y = 240 ll.x = 300 lp.lines.symbol.kind = 'FilledCross' lp.lines.symbol.size = 5 lp.lines.symbol.angle = 45 drawing.add(lp) drawing.add(ll) # drawing.title.text = "Jurong Point System Efficiency" # drawing.title.fondSize = 16 drawing.drawOn(can, 100, 450) can.showPage()
def __init__(self, width=258, height=150, *args, **kw): Drawing.__init__(self, width, height, *args, **kw) # font fontName = 'Helvetica' fontSize = 7 # chart self._add(self, LinePlot(), name='chart', validate=None, desc=None) self.chart.y = 16 self.chart.x = 32 self.chart.width = 212 self.chart.height = 90 # line styles self.chart.lines.strokeWidth = 0 self.chart.lines.symbol = makeMarker('FilledSquare') # x axis self.chart.xValueAxis = NormalDateXValueAxis() self.chart.xValueAxis.labels.fontName = fontName self.chart.xValueAxis.labels.fontSize = fontSize - 1 self.chart.xValueAxis.forceEndDate = 1 self.chart.xValueAxis.forceFirstDate = 1 self.chart.xValueAxis.labels.boxAnchor = 'autox' self.chart.xValueAxis.xLabelFormat = '{d}-{MMM}' self.chart.xValueAxis.maximumTicks = 5 self.chart.xValueAxis.minimumTickSpacing = 0.5 self.chart.xValueAxis.niceMonth = 0 self.chart.xValueAxis.strokeWidth = 1 self.chart.xValueAxis.loLLen = 5 self.chart.xValueAxis.hiLLen = 5 self.chart.xValueAxis.gridEnd = self.width self.chart.xValueAxis.gridStart = self.chart.x - 10 # y axis #self.chart.yValueAxis = AdjYValueAxis() self.chart.yValueAxis.visibleGrid = 1 self.chart.yValueAxis.visibleAxis = 0 self.chart.yValueAxis.labels.fontName = fontName self.chart.yValueAxis.labels.fontSize = fontSize - 1 self.chart.yValueAxis.labelTextFormat = '%0.2f%%' self.chart.yValueAxis.strokeWidth = 0.25 self.chart.yValueAxis.visible = 1 self.chart.yValueAxis.labels.rightPadding = 5 #self.chart.yValueAxis.maximumTicks = 6 self.chart.yValueAxis.rangeRound = 'both' self.chart.yValueAxis.tickLeft = 7.5 self.chart.yValueAxis.minimumTickSpacing = 0.5 self.chart.yValueAxis.maximumTicks = 8 self.chart.yValueAxis.forceZero = 0 self.chart.yValueAxis.avoidBoundFrac = 0.1 # legend self._add(self, LineLegend(), name='legend', validate=None, desc=None) self.legend.fontName = fontName self.legend.fontSize = fontSize self.legend.alignment = 'right' self.legend.dx = 5 # sample data self.chart.data = [[(19010706, 3.3900000000000001), (19010806, 3.29), (19010906, 3.2999999999999998), (19011006, 3.29), (19011106, 3.3399999999999999), (19011206, 3.4100000000000001), (19020107, 3.3700000000000001), (19020207, 3.3700000000000001), (19020307, 3.3700000000000001), (19020407, 3.5), (19020507, 3.6200000000000001), (19020607, 3.46), (19020707, 3.3900000000000001)], [(19010706, 3.2000000000000002), (19010806, 3.1200000000000001), (19010906, 3.1400000000000001), (19011006, 3.1400000000000001), (19011106, 3.1699999999999999), (19011206, 3.23), (19020107, 3.1899999999999999), (19020207, 3.2000000000000002), (19020307, 3.1899999999999999), (19020407, 3.3100000000000001), (19020507, 3.4300000000000002), (19020607, 3.29), (19020707, 3.2200000000000002)]] self.chart.lines[0].strokeColor = PCMYKColor(0, 100, 100, 40, alpha=100) self.chart.lines[1].strokeColor = PCMYKColor(100, 0, 90, 50, alpha=100) self.chart.xValueAxis.strokeColor = PCMYKColor(100, 60, 0, 50, alpha=100) self.legend.colorNamePairs = [(PCMYKColor(0, 100, 100, 40, alpha=100), 'Bovis Homes'), (PCMYKColor(100, 0, 90, 50, alpha=100), 'HSBC Holdings')] self.chart.lines.symbol.x = 0 self.chart.lines.symbol.strokeWidth = 0 self.chart.lines.symbol.arrowBarbDx = 5 self.chart.lines.symbol.strokeColor = PCMYKColor(0, 0, 0, 0, alpha=100) self.chart.lines.symbol.fillColor = None self.chart.lines.symbol.arrowHeight = 5 self.legend.dxTextSpace = 7 self.legend.boxAnchor = 'nw' self.legend.subCols.dx = 0 self.legend.subCols.dy = -2 self.legend.subCols.rpad = 0 self.legend.columnMaximum = 1 self.legend.deltax = 1 self.legend.deltay = 0 self.legend.dy = 5 self.legend.y = 135 self.legend.x = 120 self.chart.lines.symbol.kind = 'FilledCross' self.chart.lines.symbol.size = 5 self.chart.lines.symbol.angle = 45