概述
ScottPlot是可以用于交互显示大数据集合的一个免费开源的.NET绘图控件类库,只需要用几行代码,就可以画出各种曲线,条形图,饼图,散点图等等。
快速开始
在各个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图片
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();
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();
控制台应用程序
在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是将很多示例代码都集合在一个可以直接点击并执行的应用程序中,每个样例都展示了一种绘图的代码。主要包括下图所示的相关图形的案例。
下载链接:https://scottplot.net/demo/
运行界面如下图:
云端绘制
ScottPlot不需要GUI,因此可以用于在云应用程序中创建绘图。下面的图像是使用Azure函数每小时重新生成的,以更新GitHub API中的star指标,并从NuGet API下载计数。数据用ScottPlot绘制,并保存为blob存储器中的图像文件。