ChartDirector 7.0 (Python Edition)
Circular Label Layout
Source Code Listing
#!/usr/bin/python
# The ChartDirector for Python module is assumed to be in "../lib"
import sys, os
sys.path.insert(0, os.path.join(os.path.abspath(sys.path[0]), "..", "lib"))
from pychartdir import *
def createChart(chartIndex) :
# The data for the pie chart
data = [42, 18, 8]
# The labels for the pie chart
labels = ["Agree", "Disagree", "Not Sure"]
# The colors to use for the sectors
colors = [0x66ff66, 0xff6666, 0xffff00]
# Create a PieChart object of size 300 x 300 pixels. Set the background to a gradient color from
# blue (aaccff) to sky blue (ffffff), with a grey (888888) border. Use rounded corners and soft
# drop shadow.
c = PieChart(300, 300)
c.setBackground(c.linearGradientColor(0, 0, 0, c.getHeight() / 2, 0xaaccff, 0xffffff), 0x888888)
c.setRoundedFrame()
c.setDropShadow()
if chartIndex == 0 :
#============================================================
# Draw a pie chart where the label is on top of the pie
#============================================================
# Set the center of the pie at (150, 150) and the radius to 120 pixels
c.setPieSize(150, 150, 120)
# Set the label position to -40 pixels from the perimeter of the pie (-ve means label is
# inside the pie)
c.setLabelPos(-40)
else :
#============================================================
# Draw a pie chart where the label is outside the pie
#============================================================
# Set the center of the pie at (150, 150) and the radius to 80 pixels
c.setPieSize(150, 150, 80)
# Set the sector label position to be 20 pixels from the pie. Use a join line to connect the
# labels to the sectors.
c.setLabelPos(20, LineColor)
# Set the pie data and the pie labels
c.setData(data, labels)
# Set the sector colors
c.setColors2(DataColor, colors)
# Use local gradient shading, with a 1 pixel semi-transparent black (bb000000) border
c.setSectorStyle(LocalGradientShading, 0xbb000000, 1)
# Output the chart
c.makeChart("circlelabelpie%s.png" % chartIndex)
createChart(0)
createChart(1)