Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS ChartDirector Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /ChartDirector/scattersymbols
This example is the version from Thu, 6th Apr 2016.
Project "scattersymbols.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class PicWindow Inherits Window
EventHandler Sub Open()
// The XY points for the scatter chart
dim dataX(-1) as double = array(200, 400, 300, 250, 500.0)
dim dataY(-1) as double = array(40, 100, 50, 150, 250.0)
// The custom symbols for the points
dim symbols(-1) as folderitem
symbols.append FindFile("robot1.png")
symbols.append FindFile("robot2.png")
symbols.append FindFile("robot3.png")
symbols.append FindFile("robot4.png")
symbols.append FindFile("robot5.png")
// Create a XYChart object of size 450 x 400 pixels
dim c as new CDXYChartMBS(450, 400)
// Set the plotarea at (55, 40) and of size 350 x 300 pixels, with a light grey
// border (&hc0c0c0). Turn on both horizontal and vertical grid lines with light
// grey color (&hc0c0c0)
call c.setPlotArea(55, 40, 350, 300, -1, -1, &hc0c0c0, &hc0c0c0, -1)
// Add a title to the chart using 18 pts Times Bold Itatic font.
call c.addTitle("Battle Robots", "timesbi.ttf", 18)
// Add a title to the y axis using 12 pts Arial Bold Italic font
call c.yAxis.setTitle("Speed (km/s)", "arialbi.ttf", 12)
// Add a title to the y axis using 12 pts Arial Bold Italic font
call c.xAxis.setTitle("Range (km)", "arialbi.ttf", 12)
// Set the axes line width to 3 pixels
c.xAxis.setWidth(3)
c.yAxis.setWidth(3)
// Add each point of the data as a separate scatter layer, so that they can have
// a different symbol
dim i as integer
for i = 0 to UBound(datax)
dim coor1(0) as double = array(dataX(i))
dim coor2(0) as double = array(dataY(i))
call c.addScatterLayer(coor1, coor2).getDataSet(0).setDataSymbol(symbols(i))
next
// Output the chart
Backdrop=c.makeChartPicture
End EventHandler
Function FindFile(name as string) As FolderItem
// Look for file in parent folders from executable on
dim parent as FolderItem = app.ExecutableFile.Parent
while parent<>Nil
dim file as FolderItem = parent.Child(name)
if file<>Nil and file.Exists then
Return file
end if
parent = parent.Parent
wend
End Function
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
End Project
The items on this page are in the following plugins: MBS ChartDirector Plugin.