프로그램 개발/C#

[wpf] c# ZedGraph 사용하기 - 선 그래프 간단 설정 방법

(ㅇㅅㅎ) 2021. 7. 13. 22:57
728x90
반응형

 

 이번 포스팅에서는 자주 사용되는 세부 설정 6가지에 대해서 글을 정리해 보도록 하겠습니다.  혹시 ZedGraph를 다운로드하지 못하신 분은 이전 포스팅을 먼저 보고 와주시길 바랍니다.

 

https://onlab94.tistory.com/136

 

[wpf] c# ZedGraph 사용하기 - 간편 사용 방법

 처음 WPF에서 그래프를 그릴 때 관련 컨트롤이 존재하지 않아서 당황했었는데요. 인터넷 검색을 통해서 무료 버전의 live chart와 toolkit 등을 써보았지만 실시간이나 많은 양의 데이터를 처리하는

onlab94.tistory.com


 

1. Title : 그래프의 제목, x축과 y축에 다음과 같이 제목을 붙일 수 있습니다.

GraphPane pane = graph.GraphPane;

// 01. Title
pane.Title.Text = "Zed Graph Test";     // 전체 Title
pane.XAxis.Title.Text = "x 축";         // x축 Title
pane.YAxis.Title.Text = "y 축";		   // y축 Title

 

2. Min, Max Scale : x축과 y축의 최솟값과 최댓값을 지정할 수 있습니다. 하지만 Zoom 기능이 허용되어 있다면 값이 고정이 되지 않고 유동적으로 바뀌게 됩니다.

// 02. Min, Max Scale
pane.XAxis.Scale.Min = 0;		//x축 최소값
pane.XAxis.Scale.Max = 10;		//x축 최대값
pane.YAxis.Scale.Min = 0;		//y축 최소값
pane.YAxis.Scale.Max = 10;		//y축 최대값

 

3. Step : x축과 y축의 칸의 단위를 설정할 수 있습니다.

// 03. Step
pane.XAxis.Scale.MinorStep = 0.5;		//x축 작은칸 설정
pane.XAxis.Scale.MajorStep = 2;			//x축 큰칸 설정
pane.YAxis.Scale.MinorStep = 1;			//y축 작은칸 설정
pane.YAxis.Scale.MajorStep = 10;		//y축 큰칸 설정

 

4. Grid : x축과 y축의 칸의 선을 설정할 수 있습니다.

// 04. Grid
pane.XAxis.MajorGrid.IsVisible = true; // 큰 칸 줄을 보이게 하려면 true로 설정해줘야합니다.
pane.XAxis.MinorGrid.IsVisible = true; // 작은 칸 줄 보이게 설정

// 큰 칸
pane.XAxis.MajorGrid.DashOff = 1; // 선없는 부분 DashOn과 비율적으로 나타납니다. 
pane.XAxis.MajorGrid.DashOn = 3; // 선있는 부분 DashOff와 비율적으로 나타납니다.

// 작은 칸
pane.XAxis.MinorGrid.DashOff = 1;
pane.XAxis.MinorGrid.DashOn = 1;

 

5. Color : 그래프에서 사용되는 전반적인 색을 아래와 같은 방법으로 바꿀 수 있습니다. 예시는 Grid의 선의 색 변경입니다.

// 05. Color
//Color.FromArgb(투명도 값, 빨간색 값, 초록색 값, 파란색 값)
Color red = Color.FromArgb(255, 255, 0, 0);

// 적용법 2가지
pane.XAxis.MajorGrid.Color = red;
pane.XAxis.MinorGrid.Color = Color.Red;

 

6. LineItem : 데이터 선에 대한 설정입니다.

// 아래와 같이 설정해도 됩니다.
// pane.AddCurve("datas", points, Color.Black, SymbolType.Circle);

// 하지만 선의 두께나 부드러움 정도를 설정하려면 LineItem을 사용하는 것이 좋습니다.
LineItem lc1 = pane.AddCurve("datas", points, Color.Black, SymbolType.Circle);

// 선의 두께 설정입니다.
lc1.Line.Width = 3.0f;

SymbolType의 종류

Square
Diamond
Triangle
Circle
XCross
Plus
Star
TriangleDown
HDash
VDash
UserDefined(사용자 정의)

GraphicsPath로 제작
Default(Square)
None(없음)

 

UserDefined 예시

// GraphicsPath로 Symbol 제작
lc1.Symbol = new Symbol(SymbolType.UserDefined, Color.Violet);
lc1.Symbol.UserSymbol = new GraphicsPath( new[]{
		new PointF(-0.6f, -0.6f), new PointF(-0.6f, 0.6f), new PointF(-1.0f, 0.6f), new PointF(0f, 1.6f),
		new PointF(1.0f, 0.6f), new PointF(0.6f, 0.6f), new PointF(0.6f, -0.6f),
		new PointF(-0.6f, -0.6f)
	},
	new[]{
	(byte)PathPointType.Start, (byte)PathPointType.Line, (byte)PathPointType.Line,
	(byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line,
	(byte)PathPointType.Line, (byte)PathPointType.Line
});

// GraphicsPath 출처
//https://stackoverflow.com/questions/11879915/customize-symbol-type-of-a-zedgraph-lineitem

 

* 추가적으로 범례를 지우고 싶으시면 Legend.IsVisible의 설정을 false로 하시면 됩니다.

// 범례 안보이도록 설정
pane.Legend.IsVisible = false;

 

더욱 다양한 기능과 다른 그래프의 예시는 아래의 사이트에서 확인하시면 됩니다.

http://zedgraph.sourceforge.net/samples.html

 

Welcome to ZedGraph

 

zedgraph.sourceforge.net

 

반응형