IT정보공유/C#

DataTable을 이용한 DevExpress XtraChart Series 그리기 방법

알지오™ 2017. 9. 12.

데브익스프레스의 차트(엑스트라챠트) 컴포넌트를 이용해 차트를 그리는 방법입니다.

간단하게 DB에서 데이터를 셀렉트 하고, 엑스트라 차트의 시리즈를 디자이너를 통해 생성한 후

코드를 이용해 각 시리즈에 데이터를 할당하는 방법입니다.

DataTable을 이용한 DevExpress XtraChart Series 그리기 방법
c# tip

우선 차트 콤포넌트를 윈폼위에 올려 두고 시리즈를 생성합니다.

 

DataTable을 이용한 DevExpress XtraChart Series 그리기 방법
Devexpress Chart Control

 

일단 차트 마법사(Run Wizard) 메뉴로 들어가 차트에 값을 표시해줄 라인(Series)를 추가 하고

차트의 유형(라인차트, 막대차트, 파이차트 등등) 을 원하는 형태로 선택 합니다.

 

DataTable을 이용한 DevExpress XtraChart Series 그리기 방법
Chart Wizard

 

 

시리즈가 4개면 표시할 차트데이터가 4종류라는 뜻이고, 

 

Series view type 설정에서 사용하고자 하는 차트 형태를 선택해 주면 됩니다. 

마음에 드는 차트 모양을 골랐다면 다음다음 눌러서 이런 저런 차트 설정을 하신 후에

Finish 버튼을 눌러 차트에 시리즈를 생성해 주면 됩니다.

 

저는 4개의 시리즈를 생성했고, 4가지 항목에 대한 데이터 차트를 만들겁니다.

그중 마지막 Series 4는 막대차트로 해보았습니다. 

이유는 없어요. 그냥 한번 해본것입니다.

 

DataTable을 이용한 DevExpress XtraChart Series 그리기 방법
데브익스프레스 차트

 

제가 만든 테스트 프로그램의 차트 모양인데, 데이터를 가라로 1씩 증가시키는 형태로 만들다 보니

차트 모양이 좀 볼품이 없긴 하네요.

 

 

            chartControl1.Series.BeginUpdate(); //차트 그리는 속도를 최적화 시키기 위해 리프레쉬를 멈춰고 마지막에 엔드업데이트로 마무으리

            chartControl1.DataSource = dtTable; //DataTable 객체에 이미 DB에서 셀렉트해온 데이터가 존재합니다.


            chartControl1.Series[0].Name = "속도"; //시리지의 범주에 표시되는 이름입니다. 
            chartControl1.Series[0].ArgumentDataMember = "순번"; 
            chartControl1.Series[0].ValueDataMembers.AddRange(new string[] { "속도" });

            chartControl1.Series[1].Name = "엔진회전수";
            chartControl1.Series[1].ArgumentDataMember = "순번";
            chartControl1.Series[1].ValueDataMembers.AddRange(new string[] { "엔진회전수" });

            chartControl1.Series[2].Name = "냉각수온도";
            chartControl1.Series[2].ArgumentDataMember = "순번";
            chartControl1.Series[2].ValueDataMembers.AddRange(new string[] { "냉각수온도" });

            chartControl1.Series[3].Name = "배터리전압";
            chartControl1.Series[3].ArgumentDataMember = "순번";
            chartControl1.Series[3].ValueDataMembers.AddRange(new string[] { "배터리전압" });

            chartControl1.Series.EndUpdate();

 

각 시리즈의 ArgumentDataMember는 가로축을 의미하며, 보통은 순서대로 1,2,3,4, 또는 일자별 증가등이 되는

기준축을 잡는 건데 저는 그냥 "순번"이라고 하는 필드를 정해 주었습니다.

 

그리고 ValueDataMembers.AddRange 함수를 이용해 세로축 값을 넣어주었는데, 

이때도 마찬가지로 "배터리전압"이라는 DB Field 이름을 지정해 주셔야 됩니다. 

저는 as 를 이용해 한글로 명시를 해서 한글로 주는 것 뿐이고 DB Field명이라는걸 기억하셔야 합니다.

 

* 필드명은 한글로 해도 되긴하는데, 가급적이면 영어로 주는게 좋습니다.

댓글

💲 추천 글