ChartDirector 6.0 (ASP/COM/VB Edition)

Polar Line Chart




This example demonstrates a polar line chart, completed with data symbols and data labels.

Source Code Listing

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

' The data for the chart
data0 = Array(90, 25, 40, 55, 68, 44, 79, 85, 50)
angles0 = Array(15, 60, 110, 180, 230, 260, 260, 310, 340)

data1 = Array(80, 91, 66, 80, 92, 87)
angles1 = Array(40, 65, 88, 110, 150, 200)

' Create a PolarChart object of size 460 x 500 pixels, with a grey (e0e0e0) background and 1 pixel
' 3D border
Set c = cd.PolarChart(460, 500, &He0e0e0, &H000000, 1)

' Add a title to the chart at the top left corner using 15pt Arial Bold Italic font. Use a wood
' pattern as the title background.
Call c.addTitle("Polar Line Chart Demo", "arialbi.ttf", 15).setBackground(c.patternColor( _
    Server.MapPath("wood.png")))

' Set center of plot area at (230, 280) with radius 180 pixels, and white (ffffff) background.
Call c.setPlotArea(230, 280, 180, &Hffffff)

' Set the grid style to circular grid, with grids below the chart layers
Call c.setGridStyle(False, False)

' Add a legend box at top-center of plot area (230, 35) using horizontal layout. Use 10pt Arial Bold
' font, with 1 pixel 3D border effect.
Set b = c.addLegend(230, 35, False, "arialbd.ttf", 9)
Call b.setAlignment(cd.TopCenter)
Call b.setBackground(cd.Transparent, cd.Transparent, 1)

' Set angular axis as 0 - 360, with a spoke every 30 units
Call c.angularAxis().setLinearScale(0, 360, 30)

' Add a blue (0xff) line layer to the chart using (data0, angle0)
Set layer0 = c.addLineLayer(data0, &H0000ff, "Close Loop Line")
Call layer0.setAngles(angles0)

' Set the line width to 2 pixels
Call layer0.setLineWidth(2)

' Use 11 pixel triangle symbols for the data points
Call layer0.setDataSymbol(cd.TriangleSymbol, 11)

' Enable data label and set its format
Call layer0.setDataLabelFormat("({value},{angle})")

' Set the data label text box with light blue (0x9999ff) backgruond color and 1 pixel 3D border
' effect
Call layer0.setDataLabelStyle().setBackground(&H9999ff, cd.Transparent, 1)

' Add a red (0xff0000) line layer to the chart using (data1, angle1)
Set layer1 = c.addLineLayer(data1, &Hff0000, "Open Loop Line")
Call layer1.setAngles(angles1)

' Set the line width to 2 pixels
Call layer1.setLineWidth(2)

' Use 11 pixel diamond symbols for the data points
Call layer1.setDataSymbol(cd.DiamondSymbol, 11)

' Set the line to open loop
Call layer1.setCloseLoop(False)

' Enable data label and set its format
Call layer1.setDataLabelFormat("({value},{angle})")

' Set the data label text box with light red (0xff9999) backgruond color and 1 pixel 3D border
' effect
Call layer1.setDataLabelStyle().setBackground(&Hff9999, cd.Transparent, 1)

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

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

    Dim cd As New ChartDirector.API

    ' The data for the chart
    Dim data0()
    data0 = Array(90, 25, 40, 55, 68, 44, 79, 85, 50)
    Dim angles0()
    angles0 = Array(15, 60, 110, 180, 230, 260, 260, 310, 340)

    Dim data1()
    data1 = Array(80, 91, 66, 80, 92, 87)
    Dim angles1()
    angles1 = Array(40, 65, 88, 110, 150, 200)

    ' Create a PolarChart object of size 460 x 500 pixels, with a grey (e0e0e0) background and 1
    ' pixel 3D border
    Dim c As PolarChart
    Set c = cd.PolarChart(460, 500, &He0e0e0, &H000000, 1)

    ' Add a title to the chart at the top left corner using 15pt Arial Bold Italic font. Use a wood
    ' pattern as the title background.
    Call c.addTitle("Polar Line Chart Demo", "arialbi.ttf", 15).setBackground(c.patternColor( _
        "wood.png"))

    ' Set center of plot area at (230, 280) with radius 180 pixels, and white (ffffff) background.
    Call c.setPlotArea(230, 280, 180, &Hffffff)

    ' Set the grid style to circular grid, with grids below the chart layers
    Call c.setGridStyle(False, False)

    ' Add a legend box at top-center of plot area (230, 35) using horizontal layout. Use 10pt Arial
    ' Bold font, with 1 pixel 3D border effect.
    Dim b As LegendBox
    Set b = c.addLegend(230, 35, False, "arialbd.ttf", 9)
    Call b.setAlignment(cd.TopCenter)
    Call b.setBackground(cd.Transparent, cd.Transparent, 1)

    ' Set angular axis as 0 - 360, with a spoke every 30 units
    Call c.angularAxis().setLinearScale(0, 360, 30)

    ' Add a blue (0xff) line layer to the chart using (data0, angle0)
    Dim layer0 As PolarLineLayer
    Set layer0 = c.addLineLayer(data0, &H0000ff, "Close Loop Line")
    Call layer0.setAngles(angles0)

    ' Set the line width to 2 pixels
    Call layer0.setLineWidth(2)

    ' Use 11 pixel triangle symbols for the data points
    Call layer0.setDataSymbol(cd.TriangleSymbol, 11)

    ' Enable data label and set its format
    Call layer0.setDataLabelFormat("({value},{angle})")

    ' Set the data label text box with light blue (0x9999ff) backgruond color and 1 pixel 3D border
    ' effect
    Call layer0.setDataLabelStyle().setBackground(&H9999ff, cd.Transparent, 1)

    ' Add a red (0xff0000) line layer to the chart using (data1, angle1)
    Dim layer1 As PolarLineLayer
    Set layer1 = c.addLineLayer(data1, &Hff0000, "Open Loop Line")
    Call layer1.setAngles(angles1)

    ' Set the line width to 2 pixels
    Call layer1.setLineWidth(2)

    ' Use 11 pixel diamond symbols for the data points
    Call layer1.setDataSymbol(cd.DiamondSymbol, 11)

    ' Set the line to open loop
    Call layer1.setCloseLoop(False)

    ' Enable data label and set its format
    Call layer1.setDataLabelFormat("({value},{angle})")

    ' Set the data label text box with light red (0xff9999) backgruond color and 1 pixel 3D border
    ' effect
    Call layer1.setDataLabelStyle().setBackground(&Hff9999, cd.Transparent, 1)

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

    'include tool tip for the chart
    viewer.ImageMap = c.getHTMLImageMap("clickable", "", _
        "title='[{dataSetName}] ({radius}, {angle})'")

End Sub