728x90
728x170
▶ MainForm.cs
using System;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using ScottPlot;
using ScottPlot.Plottable;
using ScottPlot.Statistics;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
Plot plot = new Plot(800, 600);
Random random = new Random(0);
double[] valueArray = DataGen.RandomNormal(random, pointCount : 1234, mean : 178.4, stdDev : 7.6);
(double[] countArray, double[] binEdgeArray) = Common.Histogram(valueArray, min : 140, max : 220, binSize : 1);
double[] leftEdgeArray = binEdgeArray.Take(binEdgeArray.Length - 1).ToArray();
BarPlot barPlot = plot.AddBar(values : countArray, positions : leftEdgeArray);
barPlot.BorderLineWidth = 0;
barPlot.FillColor = ColorTranslator.FromHtml("#9bc3eb");
double[] smoothEdgeArray = DataGen.Range(start : binEdgeArray.First(), stop : binEdgeArray.Last(), step : 0.1, includeStop : true);
double[] smoothDensityArray = Common.ProbabilityDensity(valueArray, smoothEdgeArray, percent : true);
ScatterPlot scatterPlot = plot.AddScatterLines
(
xs : smoothEdgeArray,
ys : smoothDensityArray,
lineWidth : 2,
label : "확률"
);
scatterPlot.YAxisIndex = 1;
plot.YAxis2.Ticks(true);
BasicStats basicStats = new BasicStats(valueArray);
plot.AddVerticalLine(basicStats.Mean, Color.Black, 2, LineStyle.Solid, "평균");
plot.AddVerticalLine(basicStats.Mean - basicStats.StDev, Color.Black, 2, LineStyle.Dash, "1 SD");
plot.AddVerticalLine(basicStats.Mean + basicStats.StDev, Color.Black, 2, LineStyle.Dash);
plot.AddVerticalLine(basicStats.Mean - basicStats.StDev * 2, Color.Black, 2, LineStyle.Dot, "2 SD");
plot.AddVerticalLine(basicStats.Mean + basicStats.StDev * 2, Color.Black, 2, LineStyle.Dot);
plot.AddVerticalLine(basicStats.Min, Color.Gray, 1, LineStyle.Dash, "최소/최대");
plot.AddVerticalLine(basicStats.Max, Color.Gray, 1, LineStyle.Dash);
plot.Legend(location : Alignment.UpperRight);
plot.Title("성인 남성 신장");
plot.XAxis.Label("신장(cm)");
plot.YAxis.Label("횟수(#)");
plot.YAxis2.Label("확률(%)");
plot.SetAxisLimits(yMin : 0);
plot.SetAxisLimits(yMin : 0, yAxisIndex : 1);
this.formsPlot.Reset(plot);
this.formsPlot.Refresh();
}
#endregion
}
}
728x90
그리드형(광고전용)
'ScottPlot > WinForm' 카테고리의 다른 글
[SCOTTPLOT/WINFORM] N차 통계 차트 만들기 (0) | 2022.02.01 |
---|---|
[SCOTTPLOT/WINFORM] 선형 회귀 차트 만들기 (0) | 2022.02.01 |
[SCOTTPLOT/WINFORM] Common 클래스 : CumulativeSum 정적 메소드를 사용해 누적 값 배열 만들기 (0) | 2022.02.01 |
[SCOTTPLOT/WINFORM] 누적 확률 히스토그램 차트 만들기 (0) | 2022.02.01 |
[SCOTTPLOT/WINFORM] 다중 히스토그램 차트 만들기 (0) | 2022.01.31 |
[SCOTTPLOT/WINFORM] DataGen 클래스 : Range 정적 메소드를 사용해 범위값 배열 만들기 (0) | 2022.01.31 |
[SCOTTPLOT/WINFORM] DataGen 클래스 : RandomWalk 정적 메소드를 사용해 임의 값 배열 만들기 (0) | 2022.01.31 |
[SCOTTPLOT/WINFORM] DataGen 클래스 : Cos 정적 메소드를 사용해 코사인 값 배열 만들기 (0) | 2022.01.31 |
[SCOTTPLOT/WINFORM] DataGen 클래스 : Sin 정적 메소드를 사용해 사인 값 배열 만들기 (0) | 2022.01.31 |
[SCOTTPLOT/WINFORM] DataGen 클래스 : Consecutive 정적 메소드를 사용해 연속 값을 갖는 배열 만들기 (0) | 2022.01.31 |