Images #
About #
GraffitiChart is a simple yet effective charting solution for Desktop applications. With support for custom tooltip formatting, image export, and full style control, GraffitiChart can enhance any project.
Supported Charts:
- Bar
- Line
- Radar
- Doughnut
- Pie
- StackBar
- Polar
Requirements #
This class is not supported on Linux due to limitations in Xojo.
Enumerations #
Name |
Values |
ChartTypes |
Bar |
Line |
Radar |
Doughnut |
Pie |
StackedBar |
Polar |
Easings |
linear |
easeInBack |
easeInBounce |
easeInCirc |
easeInCubic |
easeInElastic |
easeInExpo |
easeInQuad |
easeInQuart |
easeInQuint |
easeInSine |
easeOutBack |
easeOutBounce |
easeOutCirc |
easeOutCubic |
easeOutElastic |
easeOutExpo |
easeOutQuad |
easeOutQuart |
easeOutQuint |
easeOutSine |
easeInOutBack |
easeInOutBounce |
easeInOutCirc |
easeInOutCubic |
easeInOutElastic |
easeInOutExpo |
easeInOutQuad |
easeInOutQuart |
easeInOutQuint |
easeInOutSine |
FontStyles |
Normal |
Bold |
Italic |
BoldItalic |
Constants #
Name |
Type |
Value |
|
This class exposes no constants. |
|
Events #
Definition |
Description |
AnimationComplete() |
|
DatapointClicked(Datapoint as GraffitiChartPoint) |
Raised when the user clicks a data point. |
Methods #
Definition |
Description |
AddDataset( newDataset as GraffitiChartDataset, newIndex as Integer = -1 ) |
Adds a the provided dataset at the position signified by newIndex. If newIndex is less than zero, the item is appended to the end of the array. |
DataSet( index as Integer ) as GraffitiChartDataset |
Returns that DataSet at the specified index. |
DeleteAll() |
Removes all datasets. |
DoResize() |
This method forces the chart to update its display. Most commonly would be used when resizing the control. Should not need to be called, but it’s there if you need it. |
Label( index as Integer ) as String |
Returns the label at the specified index. |
LastDatasetIndex() as Integer |
Returns the index of the final dataset. |
LastLabelIndex() as Integer |
Returns the index of the final label. |
RemoveDataset( DataIndex as Integer ) |
Removes the dataset signified by DataIndex. |
RemoveLabel( index as Integer ) |
Removes the label at the specified index. |
SetBarFill( DatasetIndex as Integer, BarIndex as Integer, NewColor as Color ) |
Changes the bar fill color for the specified bar. |
SetBarHighlightFill( DatasetIndex as Integer, BarIndex as Integer, NewColor as Color ) |
Changes the bar fill highlight color for the specified bar. |
SetBarHighlightStroke( DatasetIndex as Integer, BarIndex as Integer, NewColor as Color ) |
Changes the bar stroke highlight color for the specified bar. |
SetBarStroke( DatasetIndex as Integer, BarIndex as Integer, NewColor as Color ) |
Changes the bar stroke color for specified bar. |
Properties #
Name |
Type |
Default Value |
Description |
Animation |
Boolean |
True |
When true, the chart will animate changes to data. |
AnimationEasing |
Easings |
Linear |
The motion style to use for animating chart elements. |
AnimationSteps |
Integer |
60 |
Determines the number of frames to use for animating the chart. |
BackgroundColor |
Color |
Transparent |
If True applies a background color to the chart display. This color is not applied to the image returned by ImageData. |
BezierCurve |
Boolean |
True |
When True, lines will be curved using a bezier algorithm. |
BezierCurveTension |
Double |
0.4 |
The tension on the curved line. |
ChartType |
ChartTypes |
0 |
The type of chart to be displayed. |
DatasetFill |
Boolean |
True |
When using line charts, this will cause the data to display the background color associated with the dataset. |
Datasets() |
GraffitiChartDataset |
Nil |
The array containing the datasets for the current chart. |
DatasetStroke |
Boolean |
True |
Show the stroke line of the dataset. |
DatasetStrokeWidth |
Integer |
2 |
The pixel width of the dataset stroke. |
GridLineColor |
Color |
&c000000dd |
The color used to draw the grid lines of the chart. |
GridLineWidth |
Integer |
1 |
The pixel width of the grid line. |
Image |
Picture |
Nil |
A picture representation of the chart that is created when the AnimationComplete event fires. |
ImageData |
String(Read-Only) |
“” |
A base64-encoded image string of the currently displayed chart. |
LabelFontSize |
Integer |
12 |
Size of labels to use for chart axes. |
LabelFontStyle |
FontStyles |
Normal |
|
Labels() |
String |
Nil |
The array of dataset labels to use in the chart. |
LabelsVisible |
Boolean |
True |
Determines whether axis labels are displayed. |
MultiTooltipTemplate |
String |
“” |
Template to use for displaying tooltips for multiple overlapping datapoints. |
PointDotRadius |
Integer |
4 |
The size of the circle for each data point in applicable charts. |
PointDotStrokeWidth |
Integer |
1 |
The width of the Point Dot’s Stroke. |
PointHitDetectionRadius |
Integer |
20 |
The pixel distance in which the data point will be hovered / clicked. |
ScaleOverride |
Boolean |
False |
If True, the chart will use the values in the other Scale properties for determining the scale of the chart, rather than automatically assigning values. |
ScaleStart |
Integer |
0 |
The starting value of the Y-axis. |
ScaleSteps |
Integer |
10 |
The number of steps in the Y-axis. |
ScaleStepWidth |
Integer |
10 |
The width of the scale’s individual steps. See Examples below for more information. |
ShowGridLines |
Boolean |
True |
Determines whether the grid lines will be displayed. |
ShowPointDot |
Boolean |
True |
If True, applicable charts will draw a circle over each data point in each dataset. |
ShowToolTips |
Boolean |
True |
If True, tooltips will be shown when hovering over data points. |
TooltipAlwaysVisible |
Boolean |
False |
If True, tooltips will always be visible. |
TooltipFillColor |
Color |
&c000000 |
The background color for the displayed tooltips. |
TooltipFontColor |
Color |
&cFFFFFF |
The text color for the displayed tooltips. |
TooltipTemple |
String |
“” |
Template to be used for displaying datapoint tooltips. |
TooltipTitleFontColor |
Color |
&cFFFFFF |
The text color used in displaying titles on the tooltips. |
Examples #
Random Bar Chart #
dim r as new Random
for intDataset as Integer = 1 to 2
dim cFillColor as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cStrokeColor as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cPointColor as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cPointStrokeColor as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cHighlightFill as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cHighlightStroke as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cPointHighlightColor as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim cPointHighlightStrokeColor as Color = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
dim dataPoints() as Double
for intCycle as Integer = 1 to 12
dataPoints.Append( r.InRange( 0, 100 ) )
next
dim newData as GraffitiChartDataset = new GraffitiChartDataset( "Bar " + Format( intDataset, "#" ), cFillColor, cStrokeColor, cHighlightFill, cHighlightStroke, cPointColor, cPointStrokeColor, cPointHighlightColor, cPointHighlightStrokeColor, dataPoints() )
me.Datasets.Append( newData )
next
me.Labels = Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" )
me.ChartType = GraffitiChart.TypeBar
Random Doughnut Chart #
dim newData as GraffitiChartDataset
dim cFillColor as Color
dim cHighlightFill as Color
dim r as new Random
for intCycle as Integer = 1 to 5
cFillColor = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
cHighlightFill = RGB( r.InRange( 0, 255 ), r.InRange( 0, 255 ), r.InRange( 0, 255 ) )
newData = new GraffitiChartDataset( "Part " + Format( intCycle, "#" ), r.InRange( 0, 100 ), cFillColor, cHighlightFill )
me.Datasets.Append( newData )
next
me.ChartType = GraffitiChart.TypeDoughnut
Chart Y-Axis Scaling #
Let’s say we want our bar chart to draw only a scale between 0 and 100, with steps each 10 points. We would set the properties of the chart instance as follows (either in the inspector or programmatically in the Open event):
chartInstance.ScaleOverride = True '// Override the default scale
chartInstance.ScaleStart = 0 '// Set our starting position to 0
chartInstance.ScaleSteps = 10 '// We want 10 total steps between 0 and 100
chartInstance.ScaleWidth = 10 '// Add an axis point every 10 values between 0 and 100 (0..10..20..30)
Tooltip Templates #
Anything in between <% and %> will be executed as JavaScript. For example:
<% if (label) { %> and later <% } %>
. Using
<%= expr %>
will print the value of the variable named by
expr
into the tooltip.
The available variables to print into the tooltip depends on the chart type. In general, the following variables are available:
Variable |
Description |
value |
value of the data point |
label |
label for the position the data point is at |
datasetLabel |
label for the dataset the point is from |
strokeColor |
stroke color for the dataset |
fillColor |
fill color for the dataset |
highlightFill |
highlight fill color for the dataset |
highlightStroke |
highlight stroke color for the dataset |