Chart를 이용하여 sin, sin(x)/x, cos(x)/x 를 그려보자.
이전 게시물들과 마찬가지로 winform으로 프로젝트 생성해주고
chart component하나만 폼 위에 올려주자. chart1이라고 되어있는 이름을 편하게 쓰기위해 ch로 이름변경.
레이아웃의 Dock또한 Fill로 바꾸어주자.
ch.ChartAreas[0].BackColor = Color.Black; // ch.ChartArea["ChartArea1"]도 가능
그래프의 배경를 검은색으로해야 멋있다.
//x,y축 설정
ch.ChartAreas[0].AxisX.Minimum = -20;
ch.ChartAreas[0].AxisX.Maximum = 20;
ch.ChartAreas[0].AxisX.Interval = 2; // x축 좌표값사이의 간격
ch.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray; //눈금선 색깔
ch.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash; //선 스타일 지정 (점선, 실선 등)
ch.ChartAreas[0].AxisY.Minimum = -1;
ch.ChartAreas[0].AxisY.Maximum = 1;
ch.ChartAreas[0].AxisY.Interval = 0.2; // x축 좌표값사이의 간격
ch.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray; //눈금선 색깔
ch.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash; //선 스타일 지정 (점선, 실선 등)
AxisX,Y를 통해 x,y축을 만져주었다. 주석만 봐도 이해가 가능하다.
//Series[0]설정 = sin(x)
ch.Series[0].ChartType = SeriesChartType.Line;
ch.Series[0].Color = Color.LightGreen;
ch.Series[0].BorderWidth = 2;
ch.Series[0].LegendText = "sin(x)/x";
// Series 추가 = sin(x) / x
ch.Series.Add("Sin(x)/x");
ch.Series["Sin(x)/x"].LegendText = "Sin(x) / x";
ch.Series[1].ChartType = SeriesChartType.Line;
ch.Series[1].Color = Color.Orange;
ch.Series[1].BorderWidth = 2;
// Series 추가 = cos(x) / x
ch.Series.Add("Cos(x)/x");
ch.Series["Cos(x)/x"].LegendText = "Cos(x) / x";
ch.Series[2].ChartType = SeriesChartType.Line;
ch.Series[2].Color = Color.White;
ch.Series[2].BorderWidth = 2;
BorderWidth는 그래프 선의 굵기를 말하는 것이다.
각각의 Series들을 추가하는 코드.
//data추가
for (double x = -20; x < 20; x += 0.1)
{
double y = Math.Sin(x);
ch.Series[0].Points.AddXY(x, y);
y = Math.Sin(x) / x;
ch.Series[1].Points.AddXY(x, y);
y = Math.Cos(x) / x;
ch.Series[2].Points.AddXY(x, y);
}
반복문을 통해 x = -20 ~ 20까지의 값을 Math 함수를 이용해 Sin,Sin(x),Cos(x)값들을 y에 표현
private void ChartSetting()
{
ch.ChartAreas[0].BackColor = Color.Black; // ch.ChartArea["ChartArea1"]도 가능
//x,y축 설정
ch.ChartAreas[0].AxisX.Minimum = -20;
ch.ChartAreas[0].AxisX.Maximum = 20;
ch.ChartAreas[0].AxisX.Interval = 2; // x축 좌표값사이의 간격
ch.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray; //눈금선 색깔
ch.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash; //선 스타일 지정 (점선, 실선 등)
ch.ChartAreas[0].AxisY.Minimum = -1;
ch.ChartAreas[0].AxisY.Maximum = 1;
ch.ChartAreas[0].AxisY.Interval = 0.2; // x축 좌표값사이의 간격
ch.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray; //눈금선 색깔
ch.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash; //선 스타일 지정 (점선, 실선 등)
//Series[0]설정 = sin(x) / x
ch.Series[0].ChartType = SeriesChartType.Line;
ch.Series[0].Color = Color.LightGreen;
ch.Series[0].BorderWidth = 2;
ch.Series[0].LegendText = "sin(x)/x";
// Series 추가
ch.Series.Add("Sin(x)/x");
ch.Series["Sin(x)/x"].LegendText = "Sin(x) / x";
ch.Series[1].ChartType = SeriesChartType.Line;
ch.Series[1].Color = Color.Orange;
ch.Series[1].BorderWidth = 2;
// Series 추가
ch.Series.Add("Cos(x)/x");
ch.Series["Cos(x)/x"].LegendText = "Cos(x) / x";
ch.Series[2].ChartType = SeriesChartType.Line;
ch.Series[2].Color = Color.White;
ch.Series[2].BorderWidth = 2;
//data추가
for (double x = -20; x < 20; x += 0.1)
{
double y = Math.Sin(x);
ch.Series[0].Points.AddXY(x, y);
y = Math.Sin(x) / x;
ch.Series[1].Points.AddXY(x, y);
y = Math.Cos(x) / x;
ch.Series[2].Points.AddXY(x, y);
}
}
전체 소스코드
'C#' 카테고리의 다른 글
046_Matching Game(그림 맞추기 게임)_C# (0) | 2022.06.09 |
---|---|
045_ECG,PPG(Gragh Control) (0) | 2022.06.09 |
043_TwoChart (0) | 2022.06.09 |
042_Chart (0) | 2022.06.09 |
041_Splash (0) | 2022.06.09 |