Platforms to show: All Mac Windows Linux Cross-Platform
/ChartDirector/heatmapcelllabels
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/heatmapcelllabels
This example is the version from Fri, 9th Feb 2023.
Project "heatmapcelllabels.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class MainWindow Inherits Window
EventHandler Sub Open()
// The x-axis and y-axis labels
Dim xLabels() As String = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
Dim xLabels_size As Integer = xLabels.Ubound + 1
Dim yLabels() As String = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
Dim yLabels_size As Integer = yLabels.Ubound + 1
// Random data for the 10 x 10 cells
Dim rand As New CDRanSeriesMBS(2)
Dim zData() As Double = rand.get2DSeries(xLabels_size, yLabels_size, 0, 100)
// We set the middle 5 x 5 cells to NoValue to remove them from the chart
For x As Integer = 3 To 6
For y As Integer = 3 To 6
zData(y * xLabels_size + x) = CDBaseChartMBS.kNoValue
Next
Next
// Create an XYChart object of size 480 x 540 pixels.
Dim c As New CDXYChartMBS(480, 540)
// Set the plotarea at (50, 40) and of size 400 x 400 pixels. Set the background, border, and
// grid lines to transparent.
Dim p As CDPlotAreaMBS = c.setPlotArea(50, 40, 400, 400, -1, -1, CDBaseChartMBS.kTransparent, CDBaseChartMBS.kTransparent)
// Create a discrete heat map with 10 x 10 cells
Dim layer As CDDiscreteHeatMapLayerMBS = c.addDiscreteHeatMapLayer(zData, xLabels_size)
// Set the x-axis labels. Use 8pt Arial Bold font. Set axis stem to transparent, so only the
// labels are visible. Set 0.5 offset to position the labels in between the grid lines. Position
// the x-axis at the top of the chart.
Call c.xAxis.setLabels(xLabels)
Call c.xAxis.setLabelStyle("Arial Bold", 8)
c.xAxis.setColors(CDBaseChartMBS.kTransparent, CDBaseChartMBS.kTextColor)
c.xAxis.setLabelOffset(0.5)
Call c.xAxis.setTitle("X axis title placeholder", "Arial Bold", 12)
c.setXAxisOnTop
// Set the y-axis labels. Use 8pt Arial Bold font. Set axis stem to transparent, so only the
// labels are visible. Set 0.5 offset to position the labels in between the grid lines. Reverse
// the y-axis so that the labels are flowing top-down instead of bottom-up.
Call c.yAxis.setLabels(yLabels)
Call c.yAxis.setLabelStyle("Arial Bold", 8)
c.yAxis.setColors(CDBaseChartMBS.kTransparent, CDBaseChartMBS.kTextColor)
c.yAxis.setLabelOffset(0.5)
Call c.yAxis.setTitle("Y axis title placeholder", "Arial Bold", 12)
c.yAxis.setReverse
// Set a 3-pixel gap between cells
layer.setCellGap(3)
// Use the z value as the cell label
layer.setDataLabelFormat("{z|0}")
// Position the color axis 20 pixels below the plot area and of the width as the plot area. Put
// the labels at the bottom side of the color axis. Use 8pt Arial Bold font for the labels.
Dim cAxis As CDColorAxisMBS = layer.setColorAxis(p.getLeftX, p.getBottomY + 20, CDBaseChartMBS.kTopLeft, p.getWidth, CDBaseChartMBS.kBottom)
Call cAxis.setLabelStyle("Arial Bold", 8)
Call cAxis.setTitle("Color legend title placeholder", "Arial Bold", 12)
// Set the color stops and scale of the color axis
Dim colorScale() As Double = Array(0.0, &h00ff00, 50, &hffff00, 80, &hff6600, 100, &hff0000)
cAxis.setColorScale(colorScale)
cAxis.setLinearScale(0, 100, 10)
// 2x for higher DPI displays
c.setOutputOptions("bmpscale=2")
// Output the chart
pic = c.makeChartPicture
// drawn in paint event
End EventHandler
EventHandler Sub Paint(g As Graphics, areas() As REALbasic.Rect)
If pic <> Nil Then
// scale to window
g.DrawPicture pic, 0, 0, g.Width, g.Height, 0, 0, pic.Width, pic.Height
End If
End EventHandler
Property pic As Picture
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project
The items on this page are in the following plugins: MBS ChartDirector Plugin.