이전 게시물처럼 Chart 를 그리게 될껀데 위 사진 처럼 두개의 그래프를 합치기도 하고 나누어표현 하기도 하고 두가지 방법으로 chart를 표현해보자.
이전 게시물처럼 chart를 가져온다. chart는 한개만 가져오면 된다. 나중에 소스코드에서 추가할테니.
그리고 Button도 가져와서 각각 이름을 btnOneChart / btnTwoCharts로 바꾸어주었다. 나중에 버튼에 대한 이벤트를 지정할것이다.
Form Load시에 필요한 소스코드이다.
private void Form1_Load(object sender, EventArgs e)
{
chart1.Titles.Add("성적");
chart1.Series.Add("Series2"); //원래 series1 있었음
chart1.Series["Series1"].LegendText = "수학"; //각각 지정
chart1.Series["Series2"].LegendText = "영어";
chart1.ChartAreas.Add("ChartArea2"); //Area도 원래 있었음 Area2 추가
chart1.Series["Series2"].ChartArea = "ChartArea2"; //series2 = area2
Random r = new Random();
for (int i = 0; i < 10; i++)
{
chart1.Series["Series1"].Points.AddXY(i, r.Next(101)); //x,y값 랜덤으로 넣어줌
chart1.Series["Series2"].Points.AddXY(i, r.Next(101));
}
}
지금 form에는 chart1이 있다. 그 chart에 series1은 기본으로 들어가 있기때문에
chart1.Series.Add("Series2"); //원래 series1 있었음
series2를 추가해준것이다. 이제 chart1(area1)하나에 series는 1,2 두개가 있는것이다. 각 시리즈에 범례를 추가해주자.
chart1.Series["Series1"].LegendText = "수학"; // 범례 각각 지정
chart1.Series["Series2"].LegendText = "영어";
범례는 영어로 Legend 이다.
Random r = new Random();
for (int i = 0; i < 10; i++)
{
chart1.Series["Series1"].Points.AddXY(i, r.Next(101)); //x,y값 랜덤으로 넣어줌
chart1.Series["Series2"].Points.AddXY(i, r.Next(101));
}
AddXY로 x는 반복문의 i로 y는 0~100까지의 랜덤값으로 지정.
---------
그래프를 하나로 합치는 버튼 이벤트이다.
private void btnOneChart_Click(object sender, EventArgs e)
{
chart1.Series["Series2"].ChartArea = "ChartArea1"; //series2도 area1에 추가 = 합쳐짐
chart1.ChartAreas.RemoveAt(1); //아래에 chartarea2가 있는데 없애줌 = 크게 보임 //차트 0번 1번 중 1번
// chart1.ChartAreas.RemoveAt(chart1.ChartAreas.IndexOf("ChartArea2"));
}
원래 Series2는 ChartArea2인데 ChartArea1에 추가하는 것이다. = 합쳐짐
그리고 RemoveAt없이 실행하면 ChartArea2 가 남아있기때문에 Area2자리가 비어있어있게되기때문에 차트인덱스
(0부터시작) 2번째인 '1번'을 지우는 것이다.
private void btnTwoCharts_Click(object sender, EventArgs e)
{
chart1.ChartAreas.Add("수학영역");
chart1.Series["Series2"].ChartArea = "수학영역";
}
ChartAreas를 통해 영역을 늘려준다. 영역을 늘려야 Area가 2개 생겨 그래프가 따로따로 들어갈수있기때문이다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "Two Charts";
}
private void Form1_Load(object sender, EventArgs e)
{
chart1.Titles.Add("성적");
chart1.Series.Add("Series2"); //원래 series1 있었음
chart1.Series["Series1"].LegendText = "수학"; // 범례 각각 지정
chart1.Series["Series2"].LegendText = "영어";
chart1.ChartAreas.Add("ChartArea2"); //Area도 원래 있었음 Area2 추가
chart1.Series["Series2"].ChartArea = "ChartArea2"; //series2 = area2
Random r = new Random();
for (int i = 0; i < 10; i++)
{
chart1.Series["Series1"].Points.AddXY(i, r.Next(101)); //x,y값 랜덤으로 넣어줌
chart1.Series["Series2"].Points.AddXY(i, r.Next(101));
}
}
private void btnOneChart_Click(object sender, EventArgs e)
{
chart1.Series["Series2"].ChartArea = "ChartArea1"; //series2도 area1에 추가 = 합쳐짐
chart1.ChartAreas.RemoveAt(1); //아래에 chartarea2가 있는데 없애줌 = 크게 보임 //차트 0번 1번 중 1번
// chart1.ChartAreas.RemoveAt(chart1.ChartAreas.IndexOf("ChartArea2"));
}
private void btnTwoCharts_Click(object sender, EventArgs e)
{
chart1.ChartAreas.Add("수학영역");
chart1.Series["Series2"].ChartArea = "수학영역";
}
}
전체 소스코드
'C#' 카테고리의 다른 글
045_ECG,PPG(Gragh Control) (0) | 2022.06.09 |
---|---|
044_Graph (0) | 2022.06.09 |
042_Chart (0) | 2022.06.09 |
041_Splash (0) | 2022.06.09 |
040_WPF Login (0) | 2022.05.20 |