Back to Devexpress

How to: Colorize Charts Using the Color Object Colorizer

windowsforms-114060-controls-and-libraries-chart-control-examples-creating-charts-providing-data-how-to-colorize-charts-using-the-color-object-colorizer.md

latest5.1 KB
Original Source

How to: Colorize Charts Using the Color Object Colorizer

  • Nov 13, 2018
  • 3 minutes to read

To use the Color Object Colorizer, do the following:

Create a ColorObjectColorizer object and assign it to the SeriesViewBase.Colorizer property. Additional configuration is not required.

Note

This colorizer is used by default.

View Example

cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using DevExpress.XtraCharts;

namespace ColorObjectColorizerExample {
    public partial class Form1 : Form {
        const string filepath = "..\\..\\Data\\GDP.xml";

        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            #region #BarSeries
            // Create and customize a bar series.
            Series barSeries = new Series() {
                DataSource = LoadData(filepath),
                ArgumentDataMember = "Country",
                ColorDataMember = "NationalColor",
                View = new SideBySideBarSeriesView()
            };
            barSeries.View.Colorizer = new ColorObjectColorizer();
            barSeries.ValueDataMembers.AddRange(new string[] { "Product" });
            #endregion #BarSeries

            // Add the series to the ChartControl's Series collection.
            chartControl1.Series.Add(barSeries);

            // Show a title for the values axis.
            ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = "GDP per capita, $";
            ((XYDiagram)chartControl1.Diagram).AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
        }

        #region #DataLoad
        class HpiPoint {
            public string Country { get; set; }
            public double Product { get; set; }
            public string NationalColor { get; set; }
        }

        // Loads data from an XML data source.
        static List<HpiPoint> LoadData(string filepath) {
            XDocument doc = XDocument.Load(filepath);
            List<HpiPoint> points = new List<HpiPoint>();
            foreach (XElement element in doc.Element("G20HPIs").Elements("CountryStatistics")) {
                points.Add(new HpiPoint() {
                    Country = element.Element("Country").Value,
                    Product = Convert.ToDouble(element.Element("Product").Value),
                    NationalColor = element.Element("NationalColor").Value
                });
            }
            return points;
        }
        #endregion #DataLoad
    }
}
vb
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Xml.Linq
Imports DevExpress.XtraCharts

Namespace ColorObjectColorizerExample

    Public Partial Class Form1
        Inherits Form

        Const filepath As String = "..\..\Data\GDP.xml"

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
#Region "#BarSeries"
            ' Create and customize a bar series.
            Dim barSeries As Series = New Series() With {.DataSource = LoadData(filepath), .ArgumentDataMember = "Country", .ColorDataMember = "NationalColor", .View = New SideBySideBarSeriesView()}
            barSeries.View.Colorizer = New ColorObjectColorizer()
            barSeries.ValueDataMembers.AddRange(New String() {"Product"})
#End Region ' #BarSeries
            ' Add the series to the ChartControl's Series collection.
            chartControl1.Series.Add(barSeries)
            ' Show a title for the values axis.
            CType(chartControl1.Diagram, XYDiagram).AxisY.Title.Text = "GDP per capita, $"
            CType(chartControl1.Diagram, XYDiagram).AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True
        End Sub

#Region "#DataLoad"
        Private Class HpiPoint

            Public Property Country As String

            Public Property Product As Double

            Public Property NationalColor As String
        End Class

        ' Loads data from an XML data source.
        Private Shared Function LoadData(ByVal filepath As String) As List(Of HpiPoint)
            Dim doc As XDocument = XDocument.Load(filepath)
            Dim points As List(Of HpiPoint) = New List(Of HpiPoint)()
            For Each element As XElement In doc.Element("G20HPIs").Elements("CountryStatistics")
                points.Add(New HpiPoint() With {.Country = element.Element("Country").Value, .Product = Convert.ToDouble(element.Element("Product").Value), .NationalColor = element.Element("NationalColor").Value})
            Next

            Return points
        End Function
#End Region ' #DataLoad
    End Class
End Namespace