正文
nuget 安装scottPlot.winforms
一个典型的箱线图通常包含以下几个元素:
- 箱体(Box):箱体表示数据的四分位数,通常绘制为一个矩形框。箱体的上边界和下边界分别对应于数据的上四分位数(Q3)和下四分位数(Q1)。箱体内部的线段表示数据的中位数(Q2)。
- 须线(Whiskers):须线表示数据的范围,通常绘制为从箱体上下边界延伸出的线段。须线可以根据不同的定义方式来确定,例如最小值和最大值、1.5倍的四分位距、或者根据数据的分布情况进行自适应调整。
- 异常值(Outliers):在箱线图中,异常值是指远离箱体的离群数据点。异常值通常用单独的点或者小圆圈来表示,帮助我们识别数据中的异常情况。
通过观察箱线图,我们可以获得以下信息:
- 数据的中位数,即数据的中心趋势。
- 数据的四分位数,即数据的分布范围。
- 数据的离散程度,通过观察须线的长度来判断。
- 数据的异常值,通过观察离群点来识别。
在数据分析和可视化中,箱线图常用于比较不同组别或类别的数据分布情况,帮助我们发现差异和异常情况。
箱体图
private void Form1_Load(object sender, EventArgs e)
{
var plot = formsPlot1.Plot;
ScottPlot.Plottables.Box box1 = new ScottPlot.Plottables.Box
{
WhiskerMin = 1,//线的最低位置
BoxMin=10,//箱体的最低位置
BoxMiddle=20,//箱体的中间位置
BoxMax =30,//箱体的最高位置
WhiskerMax = 40//线的最高位置
};
ScottPlot.Plottables.Box box2 = new ScottPlot.Plottables.Box
{
WhiskerMin = 3,
BoxMin = 5,
BoxMiddle = 20,
BoxMax = 30,
WhiskerMax = 32
};
List<ScottPlot.Plottables.Box> boxes = new List<ScottPlot.Plottables.Box>()
{
box1,
box2,
};
plot.Add.Box(boxes);
}
横向显示
//修改为横向显示
var boxplot= plot.Add.Box(boxes);
boxplot.Groups.Orientation = ScottPlot.Orientation.Horizontal;
箱线图系列
用于绘制多个箱线图的数据类型。它允许您同时显示多个数据集的箱线图,以便进行比较和分析。
Box Plot Series由一个或多个箱线图数据组成,每个箱线图数据包含了一个数据集的统计信息,例如中位数、四分位数、最小值和最大值等。通过绘制多个箱线图数据,您可以在同一图表中对比不同数据集的分布情况。
private void Form1_Load(object sender, EventArgs e)
{
Random random = new Random();
var plot = formsPlot1.Plot;
//两个一组
var colorPalette = new ScottPlot.Palettes.Category10();
ScottPlot.Plottables.BoxGroup[] series = new ScottPlot.Plottables.BoxGroup[3];
for (int i = 0; i < 3; i++)
{
series[i] = new BoxGroup()
{
Fill = new FillStyle
{
Color = colorPalette.Colors[i % colorPalette.Colors.Length]
},
Boxes = new ScottPlot.Plottables.Box[2],//定义几个一系列
};
List<ScottPlot.Plottables.Box> boxes = new List<ScottPlot.Plottables.Box>();
for (int j = 0; j < 2; j++)
{
ScottPlot.Plottables.Box box1 = new ScottPlot.Plottables.Box
{
WhiskerMin = random.Next(0, 10),//线的最低位置
BoxMin = random.Next(10, 20),//箱体的最低位置
BoxMiddle = random.Next(14, 30),//箱体的中间位置
BoxMax = random.Next(25, 40),//箱体的最高位置
WhiskerMax = random.Next(35, 40)//线的最高位置
};
series[i].Boxes[j] = box1;//将box加载到系列中
}
}
var boxplot = plot.Add.Box(series);
}