Skip to main content
A newer version of this page is available. .

KeyColorColorizer Class

A colorizer that allows choosing the color depending on the SeriesBase.ColorDataMember values used as key values.

Namespace: DevExpress.XtraCharts

Assembly: DevExpress.XtraCharts.v20.1.dll

NuGet Packages: DevExpress.Charts, DevExpress.WindowsDesktop.Charts

Declaration

public class KeyColorColorizer :
    ChartPaletteColorizerBase,
    IPatternHolder

Remarks

This class introduces the KeyColorColorizer.Keys property that allows specifying keys associated with colors, and the KeyColorColorizer.KeyProvider property, that allows specifying how to obtain the key for SeriesBase.ColorDataMember values.

Use the SeriesViewBase.Colorizer property to assign the colorizer to a series view.

Refer to the Series Point Colorizer topic for more information about colorizers.

Example

To configure and use the Key-Color colorizer, perform the following steps.

Note

The complete sample project is available in the following repository: https://github.com/DevExpress-Examples/how-to-colorize-charts-using-the-key-color-colorizer-t245198.

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Xml.Linq;
using DevExpress.XtraCharts;

namespace KeyColorColorizerExample {
    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 = "Region",
                View = new SideBySideBarSeriesView()
            };
            barSeries.View.Colorizer = CreateColorizer();
            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 #KeyColorColorier
        // Creates the Key-Color colorizer for the bar chart.
        ChartColorizerBase CreateColorizer() {
            KeyColorColorizer colorizer = new KeyColorColorizer() {
                PaletteName = "Apex"
            };
            colorizer.Keys.Add("Africa");
            colorizer.Keys.Add("America");
            colorizer.Keys.Add("Asia");
            colorizer.Keys.Add("Australia");
            colorizer.Keys.Add("Europe");

            return colorizer;
        }
        #endregion #KeyColorColorier

        #region #DataLoad
        class HpiPoint {
            public string Country { get; set; }
            public double Product { get; set; }
            public string Region { 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),
                    Region = element.Element("Region").Value
                });
            }
            return points;
        }
        #endregion #DataLoad
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<G20HPIs>
  <CountryStatistics>
    <Country>Argentina</Country>
    <Region>America</Region>
    <Product>16011.6728032264</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Australia</Country>
    <Region>Australia</Region>
    <Product>38159.6336533223</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Brazil</Country>
    <Region>America</Region>
    <Product>11210.3908053823</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Canada</Country>
    <Region>America</Region>
    <Product>39050.1673163719</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>China</Country>
    <Region>Asia</Region>
    <Product>7599</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>France</Country>
    <Region>Europe</Region>
    <Product>34123.1966249035</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Germany</Country>
    <Region>Europe</Region>
    <Product>37402.2677660974</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>India</Country>
    <Region>Asia</Region>
    <Product>3425.4489267524</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Indonesia</Country>
    <Region>Asia</Region>
    <Product>4325.2533282173</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Italy</Country>
    <Region>Europe</Region>
    <Product>31954.1751781228</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Japan</Country>
    <Region>Asia</Region>
    <Product>33732.8682226596</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Mexico</Country>
    <Region>America</Region>
    <Product>14563.884253986</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Russia</Country>
    <Region>Europe</Region>
    <Product>19891.3528339013</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Saudi Arabia</Country>
    <Region>Asia</Region>
    <Product>22713.4852913284</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>South Africa</Country>
    <Region>Africa</Region>
    <Product>10565.1840563081</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>South Korea</Country>
    <Region>Asia</Region>
    <Product>29101.0711400706</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Turkey</Country>
    <Region>Africa</Region>
    <Product>15686.860167575</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>United Kingdom</Country>
    <Region>Europe</Region>
    <Product>35686.1997705521</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>Spain</Country>
    <Region>Europe</Region>
    <Product>32230.3585974199</Product>
  </CountryStatistics>
  <CountryStatistics>
    <Country>USA</Country>
    <Region>America</Region>
    <Product>47153.0094273427</Product>
  </CountryStatistics>
</G20HPIs>
See Also