在C#中,ScottPlot是一个开源的绘图库,用于在Windows Forms和WPF应用程序中创建高性能的科学图形。Signal Plot是ScottPlot库中的一个功能,用于绘制和可视化时间序列数据。
Signal Plot可以用于以下应用场景:
nuget 安装 ScottPlot.Winforms
Generate 类下常用方法
C#private void Form1_Load(object sender, EventArgs e)
{
var plot=formsPlot1.Plot;
double[] sin = Generate.Sin();
double[] cos = Generate.Cos();
plot.Add.Signal(sin);
plot.Add.Signal(cos);
}
Signal Plot可以实时交互地显示数百万个数据点。
C#var plot=formsPlot1.Plot;
double[] data = Generate.RandomWalk(100000);
plot.Add.Signal(data);
C#private void Form1_Load(object sender, EventArgs e)
{
var plot=formsPlot1.Plot;
//设置字体,防止中文乱码
plot.Style.SetFont("SimSun");
double[] sin = Generate.Sin();
double[] cos = Generate.Cos();
plot.Add.Signal(sin);
plot.Add.Signal(cos);
//x轴label
plot.XAxis.Label.Text = "Horizonal Axis";
//y轴label
plot.YAxis.Label.Text = "Vertical Axis";
//标题
plot.Title( "测试");
}
在ScottPlot中,可以通过设置绘图对象的Label属性来指定在图例中显示的文本。这样,您可以为每个绘图对象定义自定义的标签,以便在图例中清晰地显示。
C#private void Form1_Load(object sender, EventArgs e)
{
var plot=formsPlot1.Plot;
//设置字体,防止中文乱码
plot.Style.SetFont("SimSun");
double[] sin = Generate.Sin();
double[] cos = Generate.Cos();
var s1= plot.Add.Signal(sin);
var s2=plot.Add.Signal(cos);
//设置图例
s1.Label = "SIN";
s2.Label = "COS";
//显示图例
plot.Legend();
//x轴label
plot.XAxis.Label.Text = "Horizonal Axis";
//y轴label
plot.YAxis.Label.Text = "Vertical Axis";
//标题
plot.Title( "测试");
}
C#//填充背景颜色
plot.Style.Background(figure: ScottPlot.Color.FromHex("#07263b"), data: ScottPlot.Color.FromHex("#0b3049"));
plot.Style.ColorAxes(ScottPlot.Color.FromHex("#a0acb5"));
//画Grid线
plot.Style.ColorGrids(ScottPlot.Color.FromHex("#0e3d54"));
C#//设置线宽
s1.LineStyle.Width = 3;
s2.LineStyle.Width = 5;
//线的颜色
s1.LineStyle.Color = ScottPlot.Colors.Red;
C#//设置grid样式
grid.MajorLineStyle.Color = Colors.Brown.WithOpacity(.5);
grid.MinorLineStyle.Color = Colors.Green.WithOpacity(.1);
grid.MinorLineStyle.Width = 1;
C#private void Form1_Load(object sender, EventArgs e)
{
var plot = formsPlot1.Plot;
//产生100天的日期
DateTime[] dates = Generate.DateTime.Days(100, DateTime.Parse("2023-1-1"));
double[] xs = dates.Select(x => x.ToOADate()).ToArray();
//生成测试数值
double[] ys = Generate.RandomWalk(xs.Length);
plot.Add.Scatter(xs, ys);
plot.AxisStyler.DateTimeTicks(Edge.Bottom);
}
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!