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[] maleHeightArray = DataGen.RandomNormal(random, pointCount : 2345, mean : 178.4, stdDev : 7.6);
double[] femaleHeightArray = DataGen.RandomNormal(random, pointCount : 1234, mean : 164.7, stdDev : 7.1);
(double[] malePropabilityArray , double[] binEdgeArray) = Common.Histogram(maleHeightArray , min : 140, max : 210, binSize : 1, density : true);
(double[] femalePropabilityArray, _ ) = Common.Histogram(femaleHeightArray, min : 140, max : 210, binSize : 1, density : true);
double[] leftEdgeArray = binEdgeArray.Take(binEdgeArray.Length - 1).ToArray();
malePropabilityArray = malePropabilityArray.Select(x => x * 100).ToArray();
femalePropabilityArray = femalePropabilityArray.Select(x => x * 100).ToArray();
BarPlot maleBarPlot = plot.AddBar(values : malePropabilityArray, positions : leftEdgeArray);
maleBarPlot.BarWidth = 1;
maleBarPlot.BorderLineWidth = 0;
maleBarPlot.FillColor = Color.FromArgb(50, Color.Blue);
BarPlot femaleBarPlot = plot.AddBar(values : femalePropabilityArray, positions : leftEdgeArray);
femaleBarPlot.BarWidth = 1;
femaleBarPlot.BorderLineWidth = 0;
femaleBarPlot.FillColor = Color.FromArgb(50, Color.Red);
double[] maleProbabilityDensityArray = Common.ProbabilityDensity(maleHeightArray, binEdgeArray, percent : true);
plot.AddScatterLines
(
xs : binEdgeArray,
ys : maleProbabilityDensityArray,
color : Color.FromArgb(150, Color.Blue),
lineWidth : 3,
label : $"남성(n={maleHeightArray.Length:N0})"
);
double[] femaleProbabilityDensityArray = Common.ProbabilityDensity(femaleHeightArray, binEdgeArray, percent : true);
plot.AddScatterLines
(
xs : binEdgeArray,
ys : femaleProbabilityDensityArray,
color : Color.FromArgb(150, Color.Red),
lineWidth : 3,
label : $"여성(n={femaleHeightArray.Length:N0})"
);
plot.Title("성별 인간 신장");
plot.XLabel("신장(cm)");
plot.YLabel("확률(%)");
plot.Legend(location : Alignment.UpperLeft);
plot.SetAxisLimits(yMin : 0);
this.formsPlot.Reset(plot);
this.formsPlot.Refresh();
}
#endregion
}
}
728x90
그리드형(광고전용)
'ScottPlot > WinForm' 카테고리의 다른 글
[SCOTTPLOT/WINFORM] Common 클래스 : NthOrderStatistic 정적 메소드를 사용해 N차 통계 값 구하기 (0) | 2022.02.01 |
---|---|
[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 |