侧边栏壁纸
  • 累计撰写 74 篇文章
  • 累计创建 45 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

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

码峰
2022-07-19 / 0 评论 / 0 点赞 / 165 阅读 / 858 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-08-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

概述

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.Find<AvaPlot>("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

0

评论区