ChartDirector 6.0 (ASP/COM/VB Edition)

Polar Scatter Chart




This example demonstrates how to create polar scatter charts. It also demonstrates using alternating background colors along the angular direction.

A polar scatter chart can be created as a polar line chart with data symbols. The line width is set to 0, so only the symbols can be seen. This will create the effects of a scatter chart.

The detail steps are:

Note that in this example, the polar plot area uses two alternating background colors along the angular direction. This is by using PolarChart.setPlotAreaBg.

Source Code Listing

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

' The data for the chart
data0 = Array(43, 89, 76, 64, 48, 18, 92, 68, 44, 79, 71, 85)
angles0 = Array(45, 96, 169, 258, 15, 30, 330, 260, 60, 75, 110, 140)

data1 = Array(50, 91, 26, 29, 80, 53, 62, 87, 19, 40)
angles1 = Array(230, 210, 240, 310, 179, 250, 244, 199, 89, 160)

data2 = Array(88, 65, 76, 49, 80, 53)
angles2 = Array(340, 310, 340, 210, 30, 300)

' The labels on the angular axis (spokes)
labels = Array("North", "North<*br*>East", "East", "South<*br*>East", "South", "South<*br*>West", _
    "West", "North<*br*>West")

' Create a PolarChart object of size 460 x 460 pixels
Set c = cd.PolarChart(460, 460)

' Add a title to the chart at the top left corner using 15pt Arial Bold Italic font
Call c.addTitle2(cd.TopLeft, "<*underline=2*>Plants in Wonderland", "arialbi.ttf", 15)

' Set center of plot area at (230, 240) with radius 180 pixels
Call c.setPlotArea(230, 240, 180)

' Use alternative light grey/dark grey sector background color
Call c.setPlotAreaBg(&Hdddddd, &Heeeeee, False)

' Set the grid style to circular grid
Call c.setGridStyle(False)

' Add a legend box at the top right corner of the chart using 9pt Arial Bold font
Call c.addLegend(459, 0, True, "arialbd.ttf", 9).setAlignment(cd.TopRight)

' Set angular axis as 0 - 360, either 8 spokes
Call c.angularAxis().setLinearScale2(0, 360, labels)

' Set the radial axis label format
Call c.radialAxis().setLabelFormat("{value} km")

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

Call layer0.setLineWidth(0)
Call layer0.setDataSymbol(cd.TriangleSymbol, 11)

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

' Disable the line by setting its width to 0, so only the symbols are visible
Call layer1.setLineWidth(0)

' Use a 11 pixel diamond data point symbol
Call layer1.setDataSymbol(cd.DiamondSymbol, 11)

' Add a green (0x00ff00) polar line layer to the chart using (data2, angles2)
Set layer2 = c.addLineLayer(data2, &H00ff00, "Magical Tree")
Call layer2.setAngles(angles2)

' Disable the line by setting its width to 0, so only the symbols are visible
Call layer2.setLineWidth(0)

' Use a 9 pixel square data point symbol
Call layer2.setDataSymbol(cd.SquareSymbol, 9)

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

[Windows Version (in Visual Basic)] vbdemo\polarscatter.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(43, 89, 76, 64, 48, 18, 92, 68, 44, 79, 71, 85)
    Dim angles0()
    angles0 = Array(45, 96, 169, 258, 15, 30, 330, 260, 60, 75, 110, 140)

    Dim data1()
    data1 = Array(50, 91, 26, 29, 80, 53, 62, 87, 19, 40)
    Dim angles1()
    angles1 = Array(230, 210, 240, 310, 179, 250, 244, 199, 89, 160)

    Dim data2()
    data2 = Array(88, 65, 76, 49, 80, 53)
    Dim angles2()
    angles2 = Array(340, 310, 340, 210, 30, 300)

    ' The labels on the angular axis (spokes)
    Dim labels()
    labels = Array("North", "North<*br*>East", "East", "South<*br*>East", "South", _
        "South<*br*>West", "West", "North<*br*>West")

    ' Create a PolarChart object of size 460 x 460 pixels
    Dim c As PolarChart
    Set c = cd.PolarChart(460, 460)

    ' Add a title to the chart at the top left corner using 15pt Arial Bold Italic font
    Call c.addTitle2(cd.TopLeft, "<*underline=2*>Plants in Wonderland", "arialbi.ttf", 15)

    ' Set center of plot area at (230, 240) with radius 180 pixels
    Call c.setPlotArea(230, 240, 180)

    ' Use alternative light grey/dark grey sector background color
    Call c.setPlotAreaBg(&Hdddddd, &Heeeeee, False)

    ' Set the grid style to circular grid
    Call c.setGridStyle(False)

    ' Add a legend box at the top right corner of the chart using 9pt Arial Bold font
    Call c.addLegend(459, 0, True, "arialbd.ttf", 9).setAlignment(cd.TopRight)

    ' Set angular axis as 0 - 360, either 8 spokes
    Call c.angularAxis().setLinearScale2(0, 360, labels)

    ' Set the radial axis label format
    Call c.radialAxis().setLabelFormat("{value} km")

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

    Call layer0.setLineWidth(0)
    Call layer0.setDataSymbol(cd.TriangleSymbol, 11)

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

    ' Disable the line by setting its width to 0, so only the symbols are visible
    Call layer1.setLineWidth(0)

    ' Use a 11 pixel diamond data point symbol
    Call layer1.setDataSymbol(cd.DiamondSymbol, 11)

    ' Add a green (0x00ff00) polar line layer to the chart using (data2, angles2)
    Dim layer2 As PolarLineLayer
    Set layer2 = c.addLineLayer(data2, &H00ff00, "Magical Tree")
    Call layer2.setAngles(angles2)

    ' Disable the line by setting its width to 0, so only the symbols are visible
    Call layer2.setLineWidth(0)

    ' Use a 9 pixel square data point symbol
    Call layer2.setDataSymbol(cd.SquareSymbol, 9)

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

    'include tool tip for the chart
    viewer.ImageMap = c.getHTMLImageMap("clickable", "", _
        "title='{dataSetName} at ({value} km, {angle} deg)'")

End Sub