def subtest(sa, d):
     pc = Pie()
     pc.direction = d
     pc.startAngle = sa
     arcs = _makeSideArcDefs(sa, d)
     A = [x[1] for x in pc.makeAngles()]
     arcsum = sum([a[2] - a[1] for a in arcs])
     isum = intSum(arcs, A)
     mi = max([a[2] - a[1] for a in arcs])
     ni = min([a[2] - a[1] for a in arcs])
     l = []
     s = arcsum - 360
     if s > 1e-8:
         l.append("Arc length=%s != 360" % s)
     s = abs(isum - 360)
     if s > 1e-8:
         l.append("interval intersection length=%s != 360" % s)
     if mi > 360:
         l.append("max interval intersection length=%s >360" % mi)
     if ni < 0:
         l.append("min interval intersection length=%s <0" % ni)
     if l:
         l.append("sa: %s d: %s" % (sa, d))
         l.append("sidearcs: %s" % str(arcs))
         l.append("Angles: %s" % A)
         raise ValueError("piecharts._makeSideArcDefs failure\n%s" % "\n".join(l))
Ejemplo n.º 2
0
def draw_pie(data=[], labels=[], use_colors=[], width=360,):
    '''更多属性请查询reportlab.graphics.charts.piecharts.WedgeProperties'''

    pie = Pie()
    pie.x = 60 # x,y饼图在框中的坐标
    pie.y = 20
    pie.slices.label_boxStrokeColor = colors.white  #标签边框的颜色

    pie.data = data      # 饼图上的数据
    pie.labels = labels  # 数据的标签
    pie.simpleLabels = 0 # 0 标签在标注线的右侧;1 在线上边
    pie.sameRadii = 1    # 0 饼图是椭圆;1 饼图是圆形

    pie.slices.strokeColor = colors.red       # 圆饼的边界颜色
    pie.strokeWidth=1                         # 圆饼周围空白区域的宽度
    pie.strokeColor= colors.white             # 整体饼图边界的颜色
    pie.slices.label_pointer_piePad = 10       # 圆饼和标签的距离
    pie.slices.label_pointer_edgePad = 25    # 标签和外边框的距离
    pie.width = width
    pie.direction = 'clockwise'
    pie.pointerLabelMode  = 'LeftRight'
    # for i in range(len(labels)):
    #     pie.slices[i].fontName = 'song' #设置中文
    for i, col in enumerate(use_colors):
         pie.slices[i].fillColor  = col
    return pie
Ejemplo n.º 3
0
def get_pie_image(width, height, x, y, datas, lables, _colors):
    """
        ��ɱ�״ͼ
    @param width: ͼƬ���
    @param height: ͼƬ�Ŀ��
    @param x: ͼƬ��x���
    @param y: ͼƬ��y���
    @param datas: ���ͼƬ�����
    @param lables: ��״ͼ���������
    """

    from reportlab.graphics.charts.piecharts import Pie
    drawing = Drawing(width, height)
    pc = Pie()
    pc.width = 80
    pc.height = 80
    pc.x = x
    pc.y = y
    pc.data = datas
    pc.labels = lables
    pc.slices.strokeWidth = 0.5
    pc.startAngle = 90
    pc.checkLabelOverlap = True
    pc.sideLabels = True
    pc.sideLabelsOffset = 0.1
    pc.direction = 'clockwise'
    for i in range(len(lables)):
        pc.slices[i].fontName = "msyh"
        pc.slices[i].fontSize = 3
        pc.slices[i].labelRadius = 3
        pc.slices[i].popout = 5
        pc.slices[i].fillColor = _colors[i]
    drawing.add(pc)
    return drawing
Ejemplo n.º 4
0
def plpleg(i=None):
    from reportlab.lib.colors import pink, red, green
    pie = Pie()
    pie.x = 0
    pie.y = 0
    pie.pointerLabelMode='LeftAndRight'
    pie.slices.label_boxStrokeColor      = red
    pie.simpleLabels = 0
    pie.sameRadii = 1
    pie.data = [1, 0.1, 1.7, 4.2,0,0]
    pie.labels = ['abcdef', 'b', 'c', 'd','e','fedcba']
    pie.strokeWidth=1
    pie.strokeColor=green
    pie.slices.label_pointer_piePad      = 6
    pie.width = 160
    pie.direction = 'clockwise'
    pie.pointerLabelMode  = 'LeftRight'
    return autoLegender(i,pie,pie.slices,None)
Ejemplo n.º 5
0
def plpleg(i=None):
    from reportlab.lib.colors import pink, red, green
    pie = Pie()
    pie.x = 0
    pie.y = 0
    pie.pointerLabelMode='LeftAndRight'
    pie.slices.label_boxStrokeColor      = red
    pie.simpleLabels = 0
    pie.sameRadii = 1
    pie.data = [1, 0.1, 1.7, 4.2,0,0]
    pie.labels = ['abcdef', 'b', 'c', 'd','e','fedcba']
    pie.strokeWidth=1
    pie.strokeColor=green
    pie.slices.label_pointer_piePad      = 6
    pie.width = 160
    pie.direction = 'clockwise'
    pie.pointerLabelMode  = 'LeftRight'
    return autoLegender(i,pie,pie.slices,None)
def plpleg(i=None):
    from reportlab.lib.colors import pink, red, green

    pie = Pie()
    pie.x = 0
    pie.y = 0
    pie.pointerLabelMode = "LeftAndRight"
    pie.slices.label_boxStrokeColor = red
    pie.simpleLabels = 0
    pie.sameRadii = 1
    pie.data = [1, 0.1, 1.7, 4.2, 0, 0]
    pie.labels = ["abcdef", "b", "c", "d", "e", "fedcba"]
    pie.strokeWidth = 1
    pie.strokeColor = green
    pie.slices.label_pointer_piePad = 6
    pie.width = 160
    pie.direction = "clockwise"
    pie.pointerLabelMode = "LeftRight"
    return autoLegender(i, pie, pie.slices, None)
Ejemplo n.º 7
0
def draw_pass_fail_piechart(passed_data: List[int]) -> Drawing:
    passed_data_labels = ['Passed', 'Failed', 'Not run']
    d = Drawing(width=200, height=200)
    pc = Pie()
    pc.x = 50
    pc.y = 50
    pc.width = 80
    pc.height = 80
    pc.slices[0].fillColor = COLOR_GREEN
    pc.slices[1].fillColor = COLOR_RED
    pc.slices[2].fillColor = COLOR_GRAY
    pc.direction = 'anticlockwise'
    pc.data = passed_data
    pc.labels = passed_data_labels
    pc.sideLabels = True
    pc.slices.fontName = MAIN_FONT_NAME
    pc.slices.fontSize = AXIS_FONT_SIZE
    d.add(pc)
    return d
Ejemplo n.º 8
0
 def subtest(sa,d):
     pc = Pie()
     pc.direction=d
     pc.startAngle=sa
     arcs = _makeSideArcDefs(sa,d)
     A = [x[1] for x in pc.makeAngles()]
     arcsum = sum([a[2]-a[1] for a in arcs])
     isum = intSum(arcs,A)
     mi = max([a[2]-a[1] for a in arcs])
     ni = min([a[2]-a[1] for a in arcs])
     l = []
     s = (arcsum-360)
     if s>1e-8: l.append('Arc length=%s != 360' % s)
     s = abs(isum-360)
     if s>1e-8: l.append('interval intersection length=%s != 360' % s)
     if mi>360: l.append('max interval intersection length=%s >360' % mi)
     if ni<0: l.append('min interval intersection length=%s <0' % ni)
     if l:
         l.append('sa: %s d: %s' % (sa,d))
         l.append('sidearcs: %s' % str(arcs))
         l.append('Angles: %s' % A)
         raise ValueError('piecharts._makeSideArcDefs failure\n%s' % '\n'.join(l))