Platforms to show: All Mac Windows Linux Cross-Platform

/ChartDirector/surfaceaxis with controls


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/surfaceaxis with controls

This example is the version from Mon, 3rd Feb 2019.

Project "surfaceaxis with controls.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control SliderX Inherits Slider
ControlInstance SliderX Inherits Slider
EventHandler Sub ValueChanged() redraw End EventHandler
End Control
Control SliderY Inherits Slider
ControlInstance SliderY Inherits Slider
EventHandler Sub ValueChanged() redraw End EventHandler
End Control
Control SliderZ Inherits Slider
ControlInstance SliderZ Inherits Slider
EventHandler Sub ValueChanged() redraw End EventHandler
End Control
Control Out Inherits Canvas
ControlInstance Out Inherits Canvas
EventHandler Sub Paint(g As Graphics, areas() As REALbasic.Rect) #pragma Unused areas draw g End EventHandler
End Control
Sub draw(g as Graphics) // The x and y coordinates of the grid dim dataX(-1) as double dataX.Append CDBaseChartMBS.chartTime(2008, 9, 1) dataX.Append CDBaseChartMBS.chartTime(2008, 9, 2) dataX.Append CDBaseChartMBS.chartTime(2008, 9, 3) dataX.Append CDBaseChartMBS.chartTime(2008, 9, 4) dataX.Append CDBaseChartMBS.chartTime(2008, 9, 5) dataX.Append CDBaseChartMBS.chartTime(2008, 9, 6) dim dataY(-1) as string = array("Low", "Medium", "High") // The data series dim lowData(-1) as double = array(24.0, 38, 33, 25, 28, 36) dim mediumData(-1) as double = array(49.0, 42, 34, 47, 53, 50) dim highData(-1) as double = array(44.0, 51, 38, 33, 47, 42) // Create a SurfaceChart object of size 760 x 500 pixels dim c as new CDSurfaceChartMBS(760, 500) // Add a title to the chart using 18 points Arial font call c.addTitle("Surface Chart Axis Types", "Arial", 18) // Set the center of the plot region at (385, 240), and set width x depth x // height to 480 x 240 x 240 pixels c.setPlotRegion(385, 240, 480, 240, 240) // Set the elevation and rotation angles to 30 and -10 degrees c.setViewAngle(30, -10) dim dataz(-1) as double dim count as integer count=UBound(lowData) for i as integer=0 to count dataz.Append lowData(i) next count=UBound(mediumData) for i as integer=0 to count dataz.Append mediumData(i) next count=UBound(highData) for i as integer=0 to count dataz.Append highData(i) next dim data2(-1) as double // Set the data to use to plot the chart. As the y-data are text strings // (enumerated), we will use an empty array for the y-coordinates. For the z data // series, they are just the concatenation of the individual data series. c.setData(dataX,data2,dataz) // Set the y-axis labels call c.yAxis.setLabels(dataY) // Set x-axis tick density to 75 pixels. ChartDirector auto-scaling will use this // as the guideline when putting ticks on the x-axis. c.xAxis.setTickDensity(75) // Spline interpolate data to a 80 x 40 grid for a smooth surface c.setInterpolation(80, 40) // Set surface grid lines to semi-transparent black (cc000000). c.setSurfaceAxisGrid(&hcc000000) c.setViewAngle(sliderx.value,slidery.value,sliderz.value) // Set contour lines to the same color as the fill color at the contour level call c.setContourColor(c.kSameAsMainColor) // Add a color axis (the legend) in which the top right corner is anchored at // (95, 100). Set the length to 160 pixels and the labels on the left side. dim cAxis as CDColorAxisMBS = c.setColorAxis(95, 100, c.kTopRight, 160, c.kLeft) // Add a bounding box with light grey (eeeeee) background and grey (888888) // border. cAxis.setBoundingBox(&heeeeee, &h888888) // Set label style to Arial bold for all axes call c.xAxis.setLabelStyle("arialbd.ttf") call c.yAxis.setLabelStyle("arialbd.ttf") call c.zAxis.setLabelStyle("arialbd.ttf") call c.colorAxis.setLabelStyle("arialbd.ttf") // Set the x, y and z axis titles using deep blue (000088) 15 points Arial font call c.xAxis.setTitle("Date/Time Axis", "ariali.ttf", 15, &h000088) call c.yAxis.setTitle("Label"+EndOfLine.unix+"Based"+EndOfLine.unix+"Axis", "ariali.ttf", 15, &h000088) call c.zAxis.setTitle("Numeric Axis", "ariali.ttf", 15, &h000088) // Output the chart g.DrawPicture c.makechartPicture,0,0 End Sub
Sub redraw() out.Invalidate End Sub
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

See also:

The items on this page are in the following plugins: MBS ChartDirector Plugin.


The biggest plugin in space...