Skip to main content

How to: Create a 2D Line Chart

  • 3 minutes to read

The following example demonstrates how to create a 2D Line chart. To do this, it is necessary to assign the ChartControl.Diagram property to XYDiagram2D, and then add a LineSeries2D object with points to the diagram’s Diagram.Series collection.

Also, this example shows how to add a legend (showing series names) to a chart.

Line chart example

View Example

<Window x:Class="Line2DChart.Window1" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" 
        xmlns:local ="clr-namespace:Line2DChart"
        Title="Window1" Height="350" Width="620">
    <Grid>
        <dxc:ChartControl Name="chartControl1">
            <dxc:ChartControl.DataContext>
                <local:ChartViewModel/>
            </dxc:ChartControl.DataContext>
            <dxc:ChartControl.Diagram>
                <dxc:XYDiagram2D>
                    <dxc:XYDiagram2D.Series>
                        <dxc:LineSeries2D DisplayName="Day Temperature" 
                                          DataSource="{Binding DataPoints}" 
                                          ArgumentScaleType="DateTime"
                                          ArgumentDataMember="Time"
                                          ValueDataMember="Value"
                                          LabelsVisibility="True"
                                          CrosshairLabelPattern="{}{A:MMMM}: {V:f2}&#176;C"
                                          MarkerSize="14" 
                                          MarkerVisible="True">
                            <dxc:LineSeries2D.MarkerModel>
                                <dxc:RingMarker2DModel/>
                            </dxc:LineSeries2D.MarkerModel>
                            <dxc:LineSeries2D.Label>
                                <dxc:SeriesLabel TextPattern="{}{V:f1}" 
                                                 dxc:MarkerSeries2D.Angle="90" 
                                                 ConnectorVisible="False"/>
                            </dxc:LineSeries2D.Label>
                        </dxc:LineSeries2D>
                    </dxc:XYDiagram2D.Series>
                </dxc:XYDiagram2D>
            </dxc:ChartControl.Diagram>
            <dxc:ChartControl.Legend>
                <dxc:Legend HorizontalPosition="Left"/>
            </dxc:ChartControl.Legend>
        </dxc:ChartControl>
    </Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Windows;

namespace Line2DChart {

    public partial class Window1 : Window {
        public Window1() {
            InitializeComponent();
        }
    }
    public class ChartViewModel {
        List<DataPoint> dataPoints;
        public List<DataPoint> DataPoints {
            get {
                if (dataPoints == null) {
                    dataPoints = new List<DataPoint> {
                            new DataPoint (new DateTime(2021, 1, 1), 7.2),
                            new DataPoint (new DateTime(2021, 2, 1), 8.3),
                            new DataPoint (new DateTime(2021, 3, 1), 12.2),
                            new DataPoint (new DateTime(2021, 4, 1), 15.6),
                            new DataPoint (new DateTime(2021, 5, 1), 19.6),
                            new DataPoint (new DateTime(2021, 6, 1), 22.7),
                            new DataPoint (new DateTime(2021, 7, 1), 25.2),
                            new DataPoint (new DateTime(2021, 8, 1), 25),
                            new DataPoint (new DateTime(2021, 9, 1), 21.1),
                            new DataPoint (new DateTime(2021, 10, 1), 16.3),
                            new DataPoint (new DateTime(2021, 11, 1), 10.8),
                            new DataPoint (new DateTime(2021, 12, 1), 7.5)
                };
                }
                return dataPoints;
            }
        }
    }
    public class DataPoint {
        public DateTime Time { get; set; }
        public double Value { get; set; }
        public DataPoint(DateTime time, double value) {
            this.Time = time;
            this.Value = value;
        }
    }
}