雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

ScottPlot:功能强大且开源免费的C#绘图控件

2024-08-29 60

概述

ScottPlot是可以用于交互显示大数据集合的一个免费开源的.NET绘图控件类库,只需要用几行代码,就可以画出各种曲线,条形图,饼图,散点图等等。
scottplot

快速开始

在各个C#的开发框架ScottPlot的快速开始代码如下:

Windows Forms

Step 1: 安装ScottPlot.WinForms NuGet package
Step 2: 从工具箱拖拽出FormsPlot到Form窗体
Step 3: 绘制简单的曲线

double[] xs = { 1, 2, 3, 4, 5 };
double[] ys = { 1, 4, 9, 16, 25 };
var plt = new ScottPlot.Plot(400, 300);
plt.AddScatter(xs, ys);
plt.SaveFig(quickstart.png); //将绘图保存为png图片

image-1658197660894

WPF

Step 1: 安装ScottPlot.WPF NuGet package
Step 2: 添加一个WpfPlot到layout并取一个名字

WpfPlot Name=WpfPlot1 /

Step 3: 绘制简单的曲线

double[] dataX = new double[] { 1, 2, 3, 4, 5 };
double[] dataY = new double[] { 1, 4, 9, 16, 25 };
WpfPlot1.Plot.AddScatter(dataX, dataY);
WpfPlot1.Refresh();

image-1658197660894

Avalonia

Step 1: 安装ScottPlot.Avalonia NuGet package. Linux MacOS需要做以下操作:

  • Step 1.1: 安装libgdiplus

Linux: apt-get install -y libgdiplus
MacOS: brew install mono-libgdiplus

  • Step 1.2: 通过命令手动添加System.Drawing.Common包到工程中
dotnet add package System.Drawing.Common
  • Step 1.3: 根据微软的建议执行并编辑将 runtimeconfig.json 文件中的 System.Drawing.EnableUnixSupportSystem.Drawing.EnableUnixSupport设置为 true 来启用对 .NET 6 中非 Windows 平台的支持:
{
   configProperties: {
      System.Drawing.EnableUnixSupport: true
   }
}

Step 2: 导入ScottPlot.Avalonia命名空间:

Window xmlns=https://github.com/avaloniaui
        !-- More attributes --
        x:Class=ScottPlot.Demo.Avalonia.MainWindow
        xmlns:ScottPlot=clr-namespace:ScottPlot.Avalonia;assembly=ScottPlot.Avalonia
        Title=Avalonia Quickstart Width=500 Height=350

Step 3: 添加一个AvaPlot到layout并起一个名字

ScottPlot:AvaPlot Name=AvaPlot1/

Step 4: 绘制简单的曲线

double[] dataX = new double[] { 1, 2, 3, 4, 5 };
double[] dataY = new double[] { 1, 4, 9, 16, 25 };
AvaPlot avaPlot1 = this.FindAvaPlot(AvaPlot1);
avaPlot1.Plot.AddScatter(dataX, dataY);
avaPlot1.Refresh();

image-1658197660894

控制台应用程序

在C#的控制台程序中,使用ScottPlot可以有两种方法绘图:一是通过保存图片的方式,前文已经讲解如何使用几行代码将绘制的曲线保存为图片,这里就不再介绍;二是通过弹出交互的窗口来绘制和显示。
–Step1:安装ScottPlot.WinForms

  • Step2:创建一个绘图(和前文一样)
  • Step3:用创建的Plot初始化一个PlotViewer并显示,代码如下:
double[] dataX = new double[] { 1, 2, 3, 4, 5 };
double[] dataY = new double[] { 1, 4, 9, 16, 25 };
var plt = new ScottPlot.Plot(400, 300);
plt.AddScatter(dataX, dataY);
new ScottPlot.FormsPlotViewer(plt).ShowDialog();

Cookbook和Demo

ScottPlot Cookbook

ScottPlot Cookbook演示了如何使用几行代码创建折线图、条形图、饼图、散点图等。
链接如下:https://scottplot.net/cookbook

Demo

ScottPlot Demo是将很多示例代码都集合在一个可以直接点击并执行的应用程序中,每个样例都展示了一种绘图的代码。主要包括下图所示的相关图形的案例。
image-1658197680514
下载链接:https://scottplot.net/demo/
运行界面如下图:
image-1659017077945

云端绘制

ScottPlot不需要GUI,因此可以用于在云应用程序中创建绘图。下面的图像是使用Azure函数每小时重新生成的,以更新GitHub API中的star指标,并从NuGet API下载计数。数据用ScottPlot绘制,并保存为blob存储器中的图像文件。
image-1658197690623
image-1658197698773

更新于:2个月前
赞一波!2

文章评论

评论问答