본문 바로가기
C#/DevExpress

[C# DevExpress] ChartControl - LineChart

by 샤나엘 2018. 4. 9.
반응형


C# DevExpress LineChart 사용에 대한 예제입니다.

 

아래와 같은 형태의 Chart로 표시되게 됩니다.

 

Series의 ViewType를 Line으로 설정해주면 됩니다.

 

 

 

[기본 소스코드]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        private void SetLineChartData(ChartControl chart, ViewType viewType, DataTable dt)
        {
            Dictionary<string, Series> seriesList = new Dictionary<string, Series>();
 
            foreach (DataRow row in dt.Rows)
            {
                string product = row["PRODUCT"].ToString();
                string year = row["YEAR"].ToString();
                int qty = (int)row["QTY"];
 
                Series series;
                if (seriesList.TryGetValue(product, out series) == false)
                {
                    seriesList.Add(product, series = new Series(product, viewType));
 
                    //Label 표시
                    series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
 
                    chart.Series.Add(series);
                }
 
                //SeriesPoint 생성
                SeriesPoint point = new SeriesPoint(year, qty);
                series.Points.Add(point);
            }
 
            //ChartTitle 생성
            ChartTitle title = new ChartTitle();
            title.Text = viewType.ToString();
            chart.Titles.Add(title);
        }

=============================================================

 

[Line Style 변경]

 

Line의 Style을 변경하는 부분입니다. 아래는 DashDot 형태로 변경한 예제입니다.

 

LineSeriesView의 LineStyle.DashStyle 속성을 변경시켜 주면 됩니다.

 

아래 소스의 22번째 Line (빨간색으로 표시) 부분처럼 변경시켜 주면 됩니다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private void SetLineChartData(ChartControl chart, DataTable dt)
        {
            ViewType viewType = ViewType.Line;
 
            Dictionary<string, Series> seriesList = new Dictionary<string, Series>();
 
            foreach (DataRow row in dt.Rows)
            {
                string product = row["PRODUCT"].ToString();
                string year = row["YEAR"].ToString();
                int qty = (int)row["QTY"];
 
                Series series;
                if (seriesList.TryGetValue(product, out series) == false)
                {
                    seriesList.Add(product, series = new Series(product, viewType));
 
                    //Label 표시
                    series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
 
                    //LineStyle 변경
                    (series.View as LineSeriesView).LineStyle.DashStyle = DashStyle.DashDot;
 
                    chart.Series.Add(series);
                }
 
                //SeriesPoint 생성
                SeriesPoint point = new SeriesPoint(year, qty);
                series.Points.Add(point);
            }
 
            //ChartTitle 생성
            ChartTitle title = new ChartTitle();
            title.Text = viewType.ToString();
            chart.Titles.Add(title);
        }

 


=============================================================

[ArgumentScaleTyle 변경]

 

[To-Be] 그림의 빨간색 테두리 친 부분처럼 변경시키는 방법입니다.(As-Is 그림과 비교해보세요~)

 

Series.ArgumentScaleType을 설정하지 않으면 입력되는 값에 따라

내부적으로 자동으로 변경시켜 주는데,

ScaleType.Qualitative로 지정하면 입력한 값으로 표시할 수 있습니다.

 

 

 

1
2
3
Series.ArgumentScaleType = ScaleType.Qualitative;

 

 

[To-Be]

 

[As-Is]

 

=============================================================

 

[Point 표시방법]

 

아래 그림처럼 Line에 Point를 표시하는 방법입니다.

 

 

 

LineSeriesView의 MarkerVisibility 값을 DevExpress.Utils.DefaultBoolean.True로 설정하면 됩니다.

아래 소스에서 빨간색으로 표시한 부분을 참조 바랍니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
private void SetLineChartData(ChartControl chart, DataTable dt)
        {
            ViewType viewType = ViewType.Line;
 
            Dictionary<string, Series> seriesList = new Dictionary<string, Series>();
 
            foreach (DataRow row in dt.Rows)
            {
                string product = row["PRODUCT"].ToString();
                string year = row["YEAR"].ToString();
                int qty = (int)row["QTY"];
 
                Series series;
                if (seriesList.TryGetValue(product, out series) == false)
                {
                    seriesList.Add(product, series = new Series(product, viewType));
 
                    //Label 표시
                    series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
 
                    //LineStyle 변경
                    (series.View as LineSeriesView).LineStyle.DashStyle = DashStyle.DashDot;
 
                    //Line에 Point 표시
                    (series.View as LineSeriesView).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
 
                    //Argument Sclae Type 변경
                    series.ArgumentScaleType = ScaleType.Qualitative;
 
                    chart.Series.Add(series);
                }
 
                //SeriesPoint 생성
                SeriesPoint point = new SeriesPoint(year, qty);
                series.Points.Add(point);
            }
 
            //ChartTitle 생성
            ChartTitle title = new ChartTitle();
            title.Text = viewType.ToString();
            chart.Titles.Add(title);
        }

 



=============================================================

 

※ 참고

- BarChart 관련 : http://shanael.tistory.com/16

 

 

 

 

반응형

댓글