ChartDirector 6.0 (ASP/COM/VB Edition)

Icon Donut Chart




This example modifies the Icon Pie Chart example by using a semi-transparent donut instead of a pie, and using metallic background color.

Source Code Listing

[Web Version (in ASP)] aspdemo\icondonut.asp
<%@ language="vbscript" %>
<%
Set cd = CreateObject("ChartDirector.API")

' The data for the pie chart
data = Array(72, 18, 15, 12)

' The depths for the sectors
depths = Array(30, 20, 10, 10)

' The labels for the pie chart
labels = Array("Sunny", "Cloudy", "Rainy", "Snowy")

' The icons for the sectors
icons = Array("sun.png", "cloud.png", "rain.png", "snowy.png")

' Create a PieChart object of size 400 x 300 pixels
Set c = cd.PieChart(400, 300)

' Use the semi-transparent palette for this chart
Call c.setColors(cd.transparentPalette)

' Set the background to metallic light blue (CCFFFF), with a black border and 1 pixel 3D border
' effect,
Call c.setBackground(cd.metalColor(&Hccccff), &H000000, 1)

' Set default directory for loading images from current script directory
Call c.setSearchPath(Server.MapPath("."))

' Set donut center at (200, 175), and outer/inner radii as 100/50 pixels
Call c.setDonutSize(200, 175, 100, 50)

' Add a title box using 15pt Times Bold Italic font and metallic blue (8888FF) background color
Call c.addTitle("Weather Profile in Wonderland", "timesbi.ttf", 15).setBackground(cd.metalColor( _
    &H8888ff))

' Set the pie data and the pie labels
Call c.setData(data, labels)

' Add icons to the chart as a custom field
Call c.addExtraField(icons)

' Configure the sector labels using CDML to include the icon images
Call c.setLabelFormat( _
    "<*block,valign=absmiddle*><*img={field0}*> <*block*>{label}<*br*>{percent}%<*/*><*/*>")

' Draw the pie in 3D with variable 3D depths
Call c.set3D2(depths)

' Set the start angle to 225 degrees may improve layout when the depths of the sector are sorted in
' descending order, because it ensures the tallest sector is at the back.
Call c.setStartAngle(225)

' Output the chart
Response.ContentType = "image/png"
Response.BinaryWrite c.makeChart2(cd.PNG)
Response.End
%>

[Windows Version (in Visual Basic)] vbdemo\icondonut.cls
Public Sub createChart(viewer As Object, chartIndex As Integer)

    Dim cd As New ChartDirector.API

    ' The data for the pie chart
    Dim data()
    data = Array(72, 18, 15, 12)

    ' The depths for the sectors
    Dim depths()
    depths = Array(30, 20, 10, 10)

    ' The labels for the pie chart
    Dim labels()
    labels = Array("Sunny", "Cloudy", "Rainy", "Snowy")

    ' The icons for the sectors
    Dim icons()
    icons = Array("sun.png", "cloud.png", "rain.png", "snowy.png")

    ' Create a PieChart object of size 400 x 300 pixels
    Dim c As PieChart
    Set c = cd.PieChart(400, 300)

    ' Use the semi-transparent palette for this chart
    Call c.setColors(cd.transparentPalette)

    ' Set the background to metallic light blue (CCFFFF), with a black border and 1 pixel 3D border
    ' effect,
    Call c.setBackground(cd.metalColor(&Hccccff), &H000000, 1)

    ' Set donut center at (200, 175), and outer/inner radii as 100/50 pixels
    Call c.setDonutSize(200, 175, 100, 50)

    ' Add a title box using 15pt Times Bold Italic font and metallic blue (8888FF) background color
    Call c.addTitle("Weather Profile in Wonderland", "timesbi.ttf", 15).setBackground( _
        cd.metalColor(&H8888ff))

    ' Set the pie data and the pie labels
    Call c.setData(data, labels)

    ' Add icons to the chart as a custom field
    Call c.addExtraField(icons)

    ' Configure the sector labels using CDML to include the icon images
    Call c.setLabelFormat( _
        "<*block,valign=absmiddle*><*img={field0}*> <*block*>{label}<*br*>{percent}%<*/*><*/*>")

    ' Draw the pie in 3D with variable 3D depths
    Call c.set3D2(depths)

    ' Set the start angle to 225 degrees may improve layout when the depths of the sector are sorted
    ' in descending order, because it ensures the tallest sector is at the back.
    Call c.setStartAngle(225)

    ' Output the chart
    Set viewer.Picture = c.makePicture()

    'include tool tip for the chart
    viewer.ImageMap = c.getHTMLImageMap("clickable", "", _
        "title='{label}: {value} days ({percent}%)'")

End Sub