Skip to main content

Format Text Chart Elements

  • 9 minutes to read

This topic describes how to format and customize chart elements’ text.

image

This article consists of the following sections:

Use Pattern Properties

You can apply format strings to customize the text of chart elements with the ~Pattern property. Patterns can contain regular text (displayed as is) and value placeholders in braces. You can use placeholders listed in the Available Placeholders section. To format numeric and date/time values, you can apply Format Specifiers. Use a colon to separate a placeholder and its format specifier.

See the Examples section for code samples that show how to create patterns.

Available Placeholders

Basic Placeholders

This section describes placeholders for all diagram types.

Placeholder

Description

Use in Properties

{S}

Displays the series name. This value is obtained from Series.Name.

SeriesBase.CrosshairLabelPattern
SeriesBase.LegendTextPattern
SeriesBase.ToolTipPointPattern
SeriesBase.ToolTipSeriesPattern
SeriesLabelBase.TextPattern
TotalLabel.TextPattern

{A}

Displays a series point argument.

SeriesBase.CrosshairLabelPattern
SeriesBase.LegendTextPattern (if a legend displays series points)
SeriesBase.ToolTipPointPattern
SeriesLabelBase.TextPattern
TotalLabel.TextPattern (for stacked bar series)
AxisLabel.TextPattern (for x-axes)

{V}

Displays a series point value.

SeriesBase.CrosshairLabelPattern
SeriesBase.LegendTextPattern (if a legend displays series points)
SeriesBase.ToolTipPointPattern
SeriesLabelBase.TextPattern
AxisLabel.TextPattern (for y-axes)

Pie Series Placeholders

This section describes placeholders specific to Pie, Donut, and Nested Donut series.

Placeholder

Description

Use in Properties

{VP}

Displays series point values as percentages.

SeriesLabelBase.TextPattern
SeriesBase.LegendTextPattern
SeriesBase.CrosshairLabelPattern
SeriesBase.ToolTipPointPattern

{TV}

Displays a total group value.

TotalLabel.TextPattern
Title.Text (for pie series titles)

Stacked Series Placeholders

This section describes placeholders specific to stacked series (Side-by-Side Stacked Bar, Full-Stacked Area, and so on).

Placeholder

Description

Use in Properties

{VP}

Displays series point values as percentages.

SeriesLabelBase.TextPattern

SeriesBase.LegendTextPattern (if a legend displays series points)

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern (for y-axes)

{G}

Displays a stacked series point group name.

CrosshairOptions.GroupHeaderPattern

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{TV}

Displays a total group value.

TotalLabel.TextPattern (for stacked bar series)

Bubble Series Placeholders

This section describes placeholders specific to Bubble series.

Placeholder

Description

Use in Properties

{W}

Displays the series point weight.

SeriesBase.CrosshairLabelPattern

SeriesBase.LegendTextPattern (if a legend displays series points)

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

Range Series Placeholders

This section describes placeholders specific to Side-by-Side Gantt and Overlapped Gantt series.

Placeholder

Description

Use in Properties

{V1}

Displays the first point value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{V2}

Displays the second point value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{VD}

Displays the duration between the first and second data point values
formatted using a common time format
(e.g. HH:MM:SS for date time values and #.## for numeric values).

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{VDTD}

Displays the duration between the first and second date-time data point values in days.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{VDTH}

Displays the duration between the first and second date-time data point values in hours.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{VDTM}

Displays the duration between the first and second date-time data point values in minutes.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{VDTS}

Displays the duration between the first and second date-time data point values in seconds.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{VDTMS}

Displays the duration between the first and second date-time data point values in milliseconds.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

Financial Series Placeholders

This section describes placeholders specific to Stock and Candle Stick series.

Placeholder

Description

Use in Properties

{OV}

Displays a series point’s open value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{HV}

Displays a series point’s high value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{LV}

Displays a series point’s low value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

{CV}

Displays a series point’s close value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

SeriesLabelBase.TextPattern

Box Plot Series Placeholders

This section describes placeholders specific to Box Plot series.

Placeholder

Description

Use in Properties

{BP_MIN}

Displays the Box Plot point’s Minimum value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{BP_Q1}

Displays the Box Plot point’s First Quartile value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{BP_MDN}

Displays the Box Plot point’s Median value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{BP_AVG}

Displays the Box Plot point’s Mean value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{BP_Q3}

Displays the Box Plot point’s Third Quartile value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{BP_MAX}

Displays the Box Plot point’s Maximum value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

Waterfall Series Placeholders

This section describes placeholders specific to Waterfall series.

Placeholder

Description

Use in Properties

{V}

Displays a value change for a rising and falling bar in relation to the previous bar value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

{VABS}

Displays an absolute point value.

SeriesBase.CrosshairLabelPattern

SeriesBase.ToolTipPointPattern

Indicator Placeholders

This section describes placeholders you can use for indicators.

Placeholder

Description

Use in Properties

{I}

Displays the indicator name.

Indicator.CrosshairLabelPattern

{S}

Displays the series name to which the indicator belongs.

Indicator.CrosshairLabelPattern

{A}

Displays an indicator point’s argument.

Indicator.CrosshairLabelPattern

{V}

Displays an indicator point’s value.

Indicator.CrosshairLabelPattern

{AV}

Displays the Moving Average indicator average line’s point value.
The MovingAverage.Kind property value should be MovingAverage or MovingAverageAndEnvelope;
otherwise this placeholder returns 0.
You can also use the {AV} placeholder to display a middle line’s point value for a BollingerBands indicator.

Indicator.CrosshairLabelPattern

{UV}

Displays the Moving Average upper envelope line’s point value.
The MovingAverage.Kind property value should be Envelope or MovingAverageAndEnvelope;
otherwise this placeholder returns 0.
You can also use the {UV} placeholder to display an upper line’s point value for a BollingerBands indicator.

Indicator.CrosshairLabelPattern

{LV}

Displays the Moving Average lower envelope line’s value.
The MovingAverage.Kind property value should be Envelope or MovingAverageAndEnvelope;
otherwise this placeholder returns 0.
You can also use the {LV} placeholder to display a lower line’s point value for a BollingerBands indicator.

Indicator.CrosshairLabelPattern

{T}

Displays an Error Bar point’s highest value.

Indicator.CrosshairLabelPattern

{B}

Displays an Error Bar point’s lowest value.

Indicator.CrosshairLabelPattern

{SV}

Displays the MovingAverageConvergenceDivergence indicator signal line’s point value.

Indicator.CrosshairLabelPattern

Placeholders for Histograms

This section describes placeholders you can use to format a histogram chart’s x-axis labels.

Placeholder

Description

Use in Properties

{OB}

Displays an opening bracket.

IntervalOptionsBase.OverflowValuePattern

IntervalOptionsBase.Pattern

IntervalOptionsBase.UnderflowValuePattern

{CB}

Displays a closing bracket.

IntervalOptionsBase.OverflowValuePattern

IntervalOptionsBase.Pattern

IntervalOptionsBase.UnderflowValuePattern

{A1}

Displays the interval start value.

IntervalOptionsBase.OverflowValuePattern

IntervalOptionsBase.Pattern

IntervalOptionsBase.UnderflowValuePattern

{A2}

Displays the interval end value.

IntervalOptionsBase.OverflowValuePattern

IntervalOptionsBase.Pattern

IntervalOptionsBase.UnderflowValuePattern

{OS}

Displays the greater than sign.

IntervalOptionsBase.OverflowValuePattern

IntervalOptionsBase.Pattern

IntervalOptionsBase.UnderflowValuePattern

{US}

Displays the less than or less than or equal to sign.

IntervalOptionsBase.OverflowValuePattern

IntervalOptionsBase.Pattern

IntervalOptionsBase.UnderflowValuePattern

Colorizer Placeholders

Placeholders in this group are used to format legend items for range colorizers. Refer to Point Range Colorizer and Segment Range Colorizer for more information.

Placeholder

Description

Use in Properties

{V1}

Displays the first value that defines a color range boundary.

RangeColorizer.LegendItemPattern

RangeSegmentColorizer.LegendItemPattern

{V2}

Displays the second value that defines a color range boundary.

RangeColorizer.LegendItemPattern

RangeSegmentColorizer.LegendItemPattern

Examples

The following examples show how to form patterns for axis labels and legend items. You can use the same syntax to create patterns for other chart elements.

Specify Axis Label Format

The following images show charts with formatted axis labels:

The charts above use the AxisLabel.TextPattern property to format auto-generated axis labels.

AxisLabel axisXLabel = ((XYDiagram)chartControl.Diagram).AxisX.Label;
AxisLabel axisYLabel = ((XYDiagram)chartControl.Diagram).AxisY.Label;

axisXLabel.TextPattern = "{A:dd-MM HH:mm}";
axisYLabel.TextPattern = "{V} °F";

Specify Legend Item Format

The following images show charts with formatted legend items:

The charts above use the SeriesBase.LegendTextPattern property to format legend items.

private void OnFormLoad(object sender, EventArgs e) {
    ((SideBySideBarSeriesView)chartControl1.Series[0].View).ColorEach = true;
    chartControl1.Series[0].LegendTextPattern = "{S} - {A}: {V:F1}";
}

Tip

Alternatively, you can use the Pattern Editor to form patterns for series labels, axis labels, and legend items at design time.

Use Custom Placeholders

When the Chart Control or a series is bound to data, the text pattern may contain data field values in addition to default placeholders. For example, the data source contains the Discount field and the text pattern may look like: {S}: {V:F2} (Discount: {Discount:P0}).

series1.CrosshairLabelPattern = "{S}: {V:F2} (Discount: {Discount:P0})";

When the chart control is unbound, you can initialize a series point’s Tag property with an object that stores information associated with a point. Then, use the object’s property names as placeholders in patterns ({Info} in the example below).

series1.Points.Add(new SeriesPoint(new DateTime(2019, 11, 10), 20) { Tag = new { Info = "Accepted" }});
// ...
series1.CrosshairLabelPattern = "Status: {Info}";

Use HTML-Inspired Tags

You can use HTML tags to specify text for the following elements:

// Adds a title and formats its text with HTML tags.
chartControl1.Titles.Add(new ChartTitle { Text = "<i>Point Chart</i>" });

// Formats croshair label content.
series1.CrosshairLabelPattern = "Value:<br><color=#FF7200><b>{V}</b></color>";

The following image shows the results:

image

See the HTML-inspired Text Formatting document for a list of supported tags.

Change Text Based on a Specific Condition

Customize Crosshair Label Text

Use the ChartControl.CustomDrawCrosshair event to customize the crosshair label’s text. You can define any condition that allows you to specify the text’s format and appearance. If you customize the crosshair elements’ text in the event handler, patterns specified for these elements are not in effect.

chartControl1.CustomDrawCrosshair += OnCustomDrawCrosshair;
//...
private void OnCustomDrawCrosshair(object sender, CustomDrawCrosshairEventArgs e) {
    foreach (CrosshairElementGroup group in e.CrosshairElementGroups) {
        foreach (CrosshairElement element in group.CrosshairElements) {
            element.LabelElement.Text = (element.SeriesPoint.Values[0] > 20) 
                ? $"<b>{element.SeriesPoint.DateTimeArgument:MMMM dd}: </b><color=green><i>{element.SeriesPoint.Values[0]}</i></color>"
                : $"<b>{element.SeriesPoint.DateTimeArgument:MMMM dd}: </b><color=red><i>{element.SeriesPoint.Values[0]}</i></color>";
        }
    }
}

Customize Axis Label Text

  • Use the ChartControl.CustomDrawAxisLabel event to customize axis labels. For example, you can apply a specific color to labels if they display values greater than a specified threshold.

  • You can also use the AxisLabel.Formatter property to pass a custom format provider for axis labels.

Customize Total Labels

The Chart Control provides the CustomizeStackedBarTotalLabel and ChartControl.CustomizePieTotalLabel events that allow you to configure a total label‘s text format and appearance.