ChartDirector Ver 5.0 (Python Edition)

Multi-Pie Chart


    

This example demonstrates drawing multiple pies with different data and colors. It also demonstrates putting labels on the sectors and using sector borders.

Source Code Listing

[Standalone Version] pythondemo\multipie.py
#!/usr/bin/python
from pychartdir import *

def createChart(img) :

    # The data for the pie chart
    data0 = [25, 18, 15]
    data1 = [14, 32, 24]
    data2 = [25, 23, 9]

    # The labels for the pie chart
    labels = ["Software", "Hardware", "Services"]

    # Create a PieChart object of size 180 x 160 pixels
    c = PieChart(180, 160)

    # Set the center of the pie at (90, 80) and the radius to 60 pixels
    c.setPieSize(90, 80, 60)

    # Set the border color of the sectors to white (ffffff)
    c.setLineColor('0xffffff')

    # Set the background color of the sector label to pale yellow (ffffc0) with a
    # black border (000000)
    c.setLabelStyle().setBackground('0xffffc0', '0x000000')

    # Set the label to be slightly inside the perimeter of the circle
    c.setLabelLayout(CircleLayout, -10)

    # Set the title, data and colors according to which pie to draw
    if img == "0" :
        c.addTitle("Alpha Division", "arialbd.ttf", 8)
        c.setData(data0, labels)
        c.setColors2(DataColor, ['0xff3333', '0xff9999', '0xffcccc'])
    elif img == "1" :
        c.addTitle("Beta Division", "arialbd.ttf", 8)
        c.setData(data1, labels)
        c.setColors2(DataColor, ['0x33ff33', '0x99ff99', '0xccffcc'])
    else :
        c.addTitle("Gamma Division", "arialbd.ttf", 8)
        c.setData(data2, labels)
        c.setColors2(DataColor, ['0x3333ff', '0x9999ff', '0xccccff'])

    # Output the chart
    c.makeChart("multipie%s.png" % img)


createChart("0")
createChart("1")
createChart("2")

[CGI Version] pythondemo_cgi\multipie.py
#!/usr/bin/python
from pychartdir import *
import cgi

# Get HTTP query parameters
query = cgi.FieldStorage()

# The data for the pie chart
data0 = [25, 18, 15]
data1 = [14, 32, 24]
data2 = [25, 23, 9]

# The labels for the pie chart
labels = ["Software", "Hardware", "Services"]

# Create a PieChart object of size 180 x 160 pixels
c = PieChart(180, 160)

# Set the center of the pie at (90, 80) and the radius to 60 pixels
c.setPieSize(90, 80, 60)

# Set the border color of the sectors to white (ffffff)
c.setLineColor('0xffffff')

# Set the background color of the sector label to pale yellow (ffffc0) with a black
# border (000000)
c.setLabelStyle().setBackground('0xffffc0', '0x000000')

# Set the label to be slightly inside the perimeter of the circle
c.setLabelLayout(CircleLayout, -10)

# Set the title, data and colors according to which pie to draw
if query["img"].value == "0" :
    c.addTitle("Alpha Division", "arialbd.ttf", 8)
    c.setData(data0, labels)
    c.setColors2(DataColor, ['0xff3333', '0xff9999', '0xffcccc'])
elif query["img"].value == "1" :
    c.addTitle("Beta Division", "arialbd.ttf", 8)
    c.setData(data1, labels)
    c.setColors2(DataColor, ['0x33ff33', '0x99ff99', '0xccffcc'])
else :
    c.addTitle("Gamma Division", "arialbd.ttf", 8)
    c.setData(data2, labels)
    c.setColors2(DataColor, ['0x3333ff', '0x9999ff', '0xccccff'])

# Output the chart
print("Content-type: image/png\n")
binaryPrint(c.makeChart2(PNG))