ScottPlot Multi Axis 그리기 - C#
Software/C#2024. 1. 18. 09:19
반응형
ScottPlot 가 버젼 5로 업데이트 되고 사용하는 방법이나 함수가 많이 변경이 된듯 합니다.
이번 포스팅에서는 버젼 5를 기준으로 멀티 축을 그리는 방법에 대한 코드를 공유합니다.
(소스 코드)
public partial class Form1 : Form
{
private ScottPlot.AxisPanels.RightAxis? YRight2 = null; // 오른쪽 Y축 추가
private ScottPlot.AxisPanels.LeftAxis? YLeft2 = null; // 왼쪽 Y축 추가
public Form1()
{
InitializeComponent();
graphInit();
}
private void graphInit()
{
YLeft2 = formsPlot1.Plot.Axes.AddLeftAxis(); // 폼 디자인에 올려진 그래프 컨트롤에 왼쪽축을 추가하고 맵핑시킨다.
YRight2 = formsPlot1.Plot.Axes.AddRightAxis(); // 폼 디자인에 올려진 그래프 컨트롤에 오른쪽축을 추가하고 맵핑시킨다.
formsPlot1.Plot.Axes.Left.Label.Text = "Power"; // 기존 왼쪽 축의 항목을 설정
formsPlot1.Plot.Axes.Left.Label.ForeColor = Colors.Red;
formsPlot1.Plot.Axes.Right.Label.Text = "Voltage"; // 기존 오른쪽 축의 항목을 설정
formsPlot1.Plot.Axes.Right.Label.ForeColor = Colors.Green;
YLeft2.Label.Text = "SE"; // 추가된 왼쪽 축의 항목을 설정
YLeft2.Label.ForeColor = Colors.Blue;
YRight2.Label.Text = "RD"; // 추가된 오른쪽 축의 항목을 설정
YRight2.Label.ForeColor = Colors.Purple;
formsPlot1.Plot.Axes.Bottom.Label.Text = "Current"; // Bottom 축의 항목을 설정
}
private void button1_Click(object sender, EventArgs e)
{
double[] dataX = { 0, 1, 2, 3, 4, 5};
double[] dataLeftY1 = { 0, 10, 100, 300, 500, 800};
double[] dataLeftY2 = { 0.1, 0.24, 1, 2, 2.1, 2.1};
double[] dataRightY1 = { 0, 2, 2.1, 2.2, 2.3, 2.4};
double[] dataRightY2 = { 100, 10, 5, 5.1, 5.2, 5.1 };
var sigLeft1 = formsPlot1.Plot.Add.SignalXY(dataX, dataLeftY1, Colors.Red); // 시그널 생성
var sigLeft2 = formsPlot1.Plot.Add.SignalXY(dataX, dataLeftY2, Colors.Blue);
var sigRight1 = formsPlot1.Plot.Add.SignalXY(dataX, dataRightY1, Colors.Green);
var sigRight2 = formsPlot1.Plot.Add.SignalXY(dataX, dataRightY2, Colors.Purple);
sigLeft1.Axes.YAxis = formsPlot1.Plot.Axes.Left; // 시그널과 축을 맵핑
sigLeft2.Axes.YAxis = YLeft2!;
sigRight1.Axes.YAxis = formsPlot1.Plot.Axes.Right;
sigRight2.Axes.YAxis = YRight2!;
graphScale(6, 1000, 4, 5, 100); // 그래프 스케일 조정
}
private void graphScale(double X_Axis, double Y_Left1, double Y_Left2, double Y_Right1, double Y_Right2)
{
formsPlot1.Plot.Axes.Bottom.Min = 0;
formsPlot1.Plot.Axes.Bottom.Max = X_Axis;
formsPlot1.Plot.Axes.Left.Min = 0;
formsPlot1.Plot.Axes.Left.Max = Y_Left1;
formsPlot1.Plot.Axes.Right.Min = 0;
formsPlot1.Plot.Axes.Right.Max = Y_Right1;
YLeft2!.Min = 0;
YLeft2!.Max = Y_Left2;
YRight2!.Min = 0;
YRight2!.Max = Y_Right2;
formsPlot1.Refresh(); // 그래프 갱신
}
}
반응형
'Software > C#' 카테고리의 다른 글
2차원 배열의 크기를 동적으로 변경 - C# (0) | 2024.04.18 |
---|---|
C#으로 만들어 보는 Sokoban Game(Winform) (0) | 2024.03.13 |
사칙연산을 통해 알아보는 Lambda 와 Func 델리게이트 활용 - C# (0) | 2023.12.23 |
항목이 여러개인 List<>에서 각각의 항목을 나누어서 배열로 변환 C# (0) | 2023.12.12 |
설정값 저장을 위한 ini 파일 과 yaml 파일 사용방법 - C# (0) | 2023.11.29 |
댓글()