GraffitiChart

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

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