차트그리기 샘플
- 참고 문서
AMSSHB.Screen07_1.기업지원서비스 >> CMCS0024-간편통계
1. Set월별차트()
2. Set사업자별차트()
- 라인차트 전체 소스
chartControl1.Series.Clear(); //차트의 라인 제거
Series series1 = new Series("매입", ViewType.Line); //제1라인 설정
Series series2 = new Series("매출", ViewType.Line); //제2라인 설정
DataTable convertDt = FnConvertNumberic(cmsFlexGrid1.DataTable); // 하단에 설명
foreach (DataRow item in convertDt.Rows)
{
series1.Points.Add(new SeriesPoint(item0, item1)); // 월의 값으로 설정
series2.Points.Add(new SeriesPoint(item0, item3));
}
chartControl1.Series.Add(series1); //차트에 라인을 추가
chartControl1.Series.Add(series2);
chartControl1.DataSource = convertDt; //해당 데이터 매핑
series1.ArgumentScaleType = ScaleType.Auto; //Y축 범위설정이지만 자동으로 변경
series2.ArgumentScaleType = ScaleType.Auto;
series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
series2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
chartControl1.SeriesTemplate.ArgumentDataMember = convertDt.Columns0.ColumnName; // X축 설정
chartControl1.SeriesTemplate.ValueScaleType = ScaleType.Numerical; // 값을 표시할때 숫자형식으로 표시
chartControl1.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "매입거래조회년월별건수", "매입거래조회년월별거래금액", "매출거래조회년월별건수", "매출거래조회년월별거래금액" });
((LineSeriesView)series1.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
((LineSeriesView)series1.View).LineMarkerOptions.Kind = MarkerKind.Triangle; //값표시때 사용할 모양설정
((LineSeriesView)series1.View).LineStyle.DashStyle = DashStyle.Dash;
((LineSeriesView)series2.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
((LineSeriesView)series2.View).LineMarkerOptions.Kind = MarkerKind.Triangle;
((LineSeriesView)series2.View).LineStyle.DashStyle = DashStyle.Dash;
((XYDiagram)chartControl1.Diagram).EnableAxisXZooming = true; //월별로 나타나기 위한 설정
((XYDiagram)chartControl1.Diagram).AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Month;
((XYDiagram)chartControl1.Diagram).AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Month;
chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //우측 상단에 어떤 라인이지 표시여부
월별 값으로 보여야하기에 데이터 가공하기
private DataTable FnConvertNumberic(DataTable dtResult)
{
//새로 만들 테이블
DataTable returnDt = new DataTable();
returnDt.Columns.Add("매입거래조회년월", typeof(DateTime)); //날짜형식으로 변경
returnDt.Columns.Add("매입거래조회년월별건수", typeof(Int32)); //숫자형식
returnDt.Columns.Add("매입거래조회년월별거래금액", typeof(Int32));
returnDt.Columns.Add("매출거래조회년월별건수", typeof(Int32));
returnDt.Columns.Add("매출거래조회년월별거래금액", typeof(Int32));
DataRow dataRow;
if (dtResult != null)
{
//입력 받은 테이블
foreach (DataRow item in dtResult.Rows)
{
dataRow = returnDt.NewRow();
dataRow["매입거래조회년월"] = Convert.ToDateTime(item["매입거래조회년월"].ToString()+ "/01"); // yyyy/MM 형식을 날짜형식으로 변경하기 위해서 /01을 덧붙여 월의 01일로 변경
dataRow["매입거래조회년월별건수"] = Convert.ToInt32(item["매입거래조회년월별건수"].ToString());
dataRow["매입거래조회년월별거래금액"] = Convert.ToInt32(item["매입거래조회년월별거래금액"].ToString());
dataRow["매출거래조회년월별건수"] = Convert.ToInt32(item["매출거래조회년월별건수"].ToString());
dataRow["매출거래조회년월별거래금액"] = Convert.ToInt32(item["매출거래조회년월별거래금액"].ToString());
returnDt.Rows.Add(dataRow);
}
}
return returnDt;
}
- 파이차트 전체 소스
chartControl2.Series.Clear(); //파이차트 안의 라인 모두 제거
chartControl2.DataSource = FnMakeData(pieDt); //차트와 데이터 매핑
int iIndex = chartControl2.Series.Add("", ViewType.Pie); //파이차트로 설정
chartControl2.Series[iIndex].LegendTextPattern = "{A}"; //표시 여부
for (int i = 0; i < tempPieDt.Rows.Count - 1; i++){
SeriesPoint pt = new SeriesPoint(tempPieDt.Rows[i]["사업자명"].ToString(), Convert.ToInt32(tempPieDt.Rows[i]["매입건수"]));
chartControl2.Series[iIndex].Points.Add(pt);
}
private DataTable FnMakeData(DataTable dtResult)
{
DataTable returnDt = new DataTable();
returnDt.Columns.Add("순위", typeof(String));
returnDt.Columns.Add("사업자명", typeof(String));
returnDt.Columns.Add("매입건수", typeof(Int32));
returnDt.Columns.Add("매출건수", typeof(Int32));
returnDt.Columns.Add("매입금액", typeof(Int32));
returnDt.Columns.Add("매출금액", typeof(Int32));
DataRow dataRow;
for (int i = 0; i < dtResult.Rows.Count; i++)
{
dataRow = returnDt.NewRow();
dataRow["순위"] = dtResult.Rows[i]["순위"].ToString();
dataRow["사업자명"] = dtResult.Rows[i]["사업자명"].ToString() ;
dataRow["매입건수"] = Convert.ToInt32(dtResult.Rows[i]["매입건수"].ToString()) ;
dataRow["매출건수"] = Convert.ToInt32(dtResult.Rows[i]["매출건수"].ToString());
dataRow["매입금액"] = Convert.ToInt32(dtResult.Rows[i]["매입금액"].ToString());
dataRow["매출금액"] = Convert.ToInt32(dtResult.Rows[i]["매출금액"].ToString());
returnDt.Rows.Add(dataRow);
}
return returnDt;
}