在 ScottPlot 中,Plot.Add.Scatter() 是一个常用的方法,用于绘制散点图或折线图。它允许你自定义 X 和 Y 值、颜色、标记样式、线条样式等。以下是 Plot.Add.Scatter() 的详细参数和功能说明。
________________________________________
方法签名
csharp
复制
public ScottPlot.Plottable.ScatterPlot Add.Scatter(
double[] xs, // X 值数组
double[] ys, // Y 值数组
Color? color = null, // 线条和标记颜色
double lineWidth = 1, // 线条宽度
double markerSize = 5, // 标记大小
string label = null, // 图例标签
LineStyle lineStyle = LineStyle.Solid, // 线条样式
MarkerShape markerShape = MarkerShape.filledCircle // 标记形状
)
参数说明:
• xs:X 值数组(必需)。
• ys:Y 值数组(必需)。
• color:线条和标记的颜色(可选,默认值为 null,使用默认颜色)。
• lineWidth:线条宽度(可选,默认值为 1)。
• markerSize:标记大小(可选,默认值为 5)。
• label:图例标签(可选,默认值为 null)。
• lineStyle:线条样式(可选,默认值为 LineStyle.Solid)。
• markerShape:标记形状(可选,默认值为 MarkerShape.filledCircle)。
________________________________________
功能
• 绘制散点图或折线图。
• 支持自定义 X 和 Y 值。
• 支持自定义颜色、线条宽度、标记大小、线条样式和标记形状。
• 支持添加图例标签。
________________________________________
使用示例
示例 1:基本用法
绘制一个简单的散点图。
csharp
复制
double[] xs = { 1, 2, 3, 4, 5 }; // X 值
double[] ys = { 1, 4, 9, 16, 25 }; // Y 值
var scatterPlot = formsPlot1.Plot.Add.Scatter(xs, ys);
formsPlot1.Refresh(); // 刷新绘图
示例 2:自定义颜色和线宽
设置线条颜色为红色,线宽为 2。
csharp
复制
double[] xs = { 1, 2, 3, 4, 5 }; // X 值
double[] ys = { 1, 4, 9, 16, 25 }; // Y 值
var scatterPlot = formsPlot1.Plot.Add.Scatter(xs, ys, color: Color.Red, lineWidth: 2);
formsPlot1.Refresh(); // 刷新绘图
示例 3:添加图例标签
为散点图添加图例标签。
csharp
复制
double[] xs = { 1, 2, 3, 4, 5 }; // X 值
double[] ys = { 1, 4, 9, 16, 25 }; // Y 值
var scatterPlot = formsPlot1.Plot.Add.Scatter(xs, ys, label: "数据点");
formsPlot1.Plot.Legend(); // 显示图例
formsPlot1.Refresh(); // 刷新绘图
示例 4:设置线条样式
设置线条样式为虚线。
csharp
复制
double[] xs = { 1, 2, 3, 4, 5 }; // X 值
double[] ys = { 1, 4, 9, 16, 25 }; // Y 值
var scatterPlot = formsPlot1.Plot.Add.Scatter(xs, ys, lineStyle: LineStyle.Dash);
formsPlot1.Refresh(); // 刷新绘图
示例 5:设置标记形状和大小
设置标记形状为正方形,大小为 10。
csharp
复制
double[] xs = { 1, 2, 3, 4, 5 }; // X 值
double[] ys = { 1, 4, 9, 16, 25 }; // Y 值
var scatterPlot = formsPlot1.Plot.Add.Scatter(
xs, ys,
markerShape: MarkerShape.filledSquare, // 标记形状
markerSize: 10 // 标记大小
);
formsPlot1.Refresh(); // 刷新绘图
________________________________________
高级用法
1. 动态更新数据
可以通过 scatterPlot.Update() 方法动态更新数据。
csharp
复制
double[] xs = { 1, 2, 3, 4, 5 }; // 初始 X 值
double[] ys = { 1, 4, 9, 16, 25 }; // 初始 Y 值
var scatterPlot = formsPlot1.Plot.Add.Scatter(xs, ys);
formsPlot1.Refresh(); // 刷新绘图
// 更新数据
double[] newXs = { 1, 2, 3, 4, 5 };
double[] newYs = { 2, 5, 10, 17, 26 };
scatterPlot.Update(newXs, newYs);
formsPlot1.Refresh(); // 刷新绘图
2. 自定义标记形状
ScottPlot 提供了多种标记形状,例如:
• MarkerShape.filledCircle(默认)
• MarkerShape.filledSquare
• MarkerShape.filledDiamond
• MarkerShape.filledTriangleUp
• MarkerShape.filledTriangleDown
3. 自定义线条样式
ScottPlot 提供了多种线条样式,例如:
• LineStyle.Solid(默认)
• LineStyle.Dash
• LineStyle.Dot
• LineStyle.DashDot
• LineStyle.DashDotDot
________________________________________
完整示例代码
以下是一个完整的示例,展示如何使用 Plot.Add.Scatter() 绘制散点图:
csharp
复制
using System;
using System.Drawing;
using System.Windows.Forms;
using ScottPlot;
public partial class Form1 : Form
{
private FormsPlot formsPlot1;
public Form1()
{
InitializeComponent();
// 初始化FormsPlot
formsPlot1 = new FormsPlot();
formsPlot1.Dock = DockStyle.Fill;
this.Controls.Add(formsPlot1);
// 生成示例数据
double[] xs = { 1, 2, 3, 4, 5 }; // X 值
double[] ys = { 1, 4, 9, 16, 25 }; // Y 值
// 添加散点图
var scatterPlot = formsPlot1.Plot.Add.Scatter(
xs, ys,
color: Color.Blue,
lineWidth: 2,
markerSize: 10,
label: "数据点",
lineStyle: LineStyle.Dash,
markerShape: MarkerShape.filledSquare
);
// 显示图例
formsPlot1.Plot.Legend();
// 设置坐标轴标签
formsPlot1.Plot.XLabel("X 轴");
formsPlot1.Plot.YLabel("Y 轴");
// 刷新绘图
formsPlot1.Refresh();
}
}
________________________________________
总结
• Plot.Add.Scatter() 用于绘制散点图或折线图。
• 支持自定义 X 和 Y 值、颜色、线条宽度、标记大小、线条样式和标记形状。
• 可以通过 scatterPlot.Update() 动态更新数据。
• 适用于需要高度自定义的图表绘制场景。
通过合理使用 Plot.Add.Scatter(),可以轻松绘制出美观且功能丰富的散点图或折线图。