Skip to main content
All docs
V25.1
  • HeatmapDataSourceAdapter Class

    Loads heatmap data from a data source.

    Namespace: DevExpress.XtraCharts.Heatmap

    Assembly: DevExpress.XtraCharts.v25.1.dll

    NuGet Package: DevExpress.Charts

    #Declaration

    public class HeatmapDataSourceAdapter :
        HeatmapDataAdapterBase,
        IHeatmapDataSourceProvider,
        IHeatmapAdapter,
        IDataSourceChangedEventHandlerProvider,
        IServiceProviderHolder,
        IBindingPropertiesProvider

    #Remarks

    Use the HeatmapControl.DataAdapter to assign a HeatmapDataSourceAdapter to a heatmap. Specify the following adapter properties to load data to the heatmap:

    #Example

    The following example shows how to create a heatmap and bind it to a data source. In this example, the heatmap obtains data from an XML file.

    A heatmap that uses a Data Source Adapter to load data.

    Follow the steps below to create a heatmap:

    using DevExpress.XtraCharts;
    using DevExpress.XtraCharts.Heatmap;
    using System;
    using System.Data;
    using System.Drawing;
    using System.IO;
    using System.Windows.Forms;
    
    namespace HeatmapChart {
        public partial class Form1 : Form {
            public Form1() {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e) {
                HeatmapControl heatmap = new HeatmapControl();
                heatmap.Dock = DockStyle.Fill;
                this.Controls.Add(heatmap);
    
                Palette palette = new Palette("Custom") {
                    Color.Red,
                    Color.White,
                    Color.Green
                };
    
                HeatmapRangeColorProvider colorProvider = new HeatmapRangeColorProvider() {
                    Palette = palette,
                    ApproximateColors = true
                };
    
                colorProvider.RangeStops.Add(new HeatmapRangeStop(0, HeatmapRangeStopType.Percentage));
                colorProvider.RangeStops.Add(new HeatmapRangeStop(-10, HeatmapRangeStopType.Absolute));
                colorProvider.RangeStops.Add(new HeatmapRangeStop(-2.5, HeatmapRangeStopType.Absolute));
                colorProvider.RangeStops.Add(new HeatmapRangeStop(0, HeatmapRangeStopType.Absolute));
                colorProvider.RangeStops.Add(new HeatmapRangeStop(2.5, HeatmapRangeStopType.Absolute));
                colorProvider.RangeStops.Add(new HeatmapRangeStop(10, HeatmapRangeStopType.Absolute));
                colorProvider.RangeStops.Add(new HeatmapRangeStop(1, HeatmapRangeStopType.Percentage));
    
                heatmap.ColorProvider = colorProvider;
    
                DataTable data = CreateDataSet("BalanceOfTrade.xml");
    
                heatmap.DataAdapter = new HeatmapDataSourceAdapter() {
                    XArgumentDataMember = "Country",
                    YArgumentDataMember = "Product",
                    ColorDataMember = "Value",
                    DataSource = data                
                };
    
                heatmap.Titles.Add(new HeatmapTitle { Text = "Balance of Trade" });
    
                heatmap.Label.Visible = true;
                heatmap.Label.Font = new Font("SegoeUI", 6);
                heatmap.Label.Pattern = "{V}";
    
                heatmap.ToolTipEnabled = true;
                heatmap.ToolTipController = new DevExpress.Utils.ToolTipController {
                    AllowHtmlText = true,
                    ToolTipLocation = DevExpress.Utils.ToolTipLocation.RightTop,
                    ShowBeak = true
                };
                heatmap.ToolTipTextPattern = "X: <b>{X}</b>\nY: <b>{Y}</b>";
            }
            public static DataTable CreateDataSet(string xmlFileName) {
                string filePath = GetRelativePath(xmlFileName);
                if (!string.IsNullOrWhiteSpace(filePath)) {
                    DataSet dataSet = new DataSet();
                    dataSet.ReadXml(filePath);
                    if (dataSet.Tables.Count > 0)
                        return dataSet.Tables[0];
                }
                return null;
            }
            public static string GetRelativePath(string name) {
                name = "Data\\" + name;
                DirectoryInfo dir = new DirectoryInfo(Application.StartupPath);
                for (int i = 0; i <= 10; i++) {
                    string filePath = Path.Combine(dir.FullName, name);
                    if (File.Exists(filePath))
                        return filePath;
                    dir = Directory.GetParent(dir.FullName);
                }
                return string.Empty;
            }
        }
    }
    

    The XML file structure looks as follows:

    Show XML
    <?xml version="1.0" standalone="yes"?>
    <BalanceOfTrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="Item">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Country" type="xs:string"/>
              <xs:element name="Product" type="xs:string"/>
              <xs:element name="Value" type="xs:double"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <Item>
        <Country>China</Country>
        <Product>Computer</Product>
        <Value>-151.9</Value>
      </Item>
      <Item>
        <Country>China</Country>
        <Product>Oil, Gas, Minerals</Product>
        <Value>1.9</Value>
      </Item>
      <Item>
        <Country>China</Country>
        <Product>Transportation</Product>
        <Value>10.9</Value>
      </Item>
      <Item>
        <Country>China</Country>
        <Product>Apparel</Product>
        <Value>-56.3</Value>
      </Item>
      <!--...-->
    </BalanceOfTrade>     
    

    #Inheritance

    Object
    DevExpress.XtraCharts.Native.NotificationElement
    HeatmapDataAdapterBase
    HeatmapDataSourceAdapter
    See Also