项目简介

作为一款面向.NET 生态的免费开源绘图库,ScottPlot 凭借卓越性能,成为大规模数据集交互式可视化的理想选择,能轻松打破海量数据展示的技术壁垒,为开发者提供高效解决方案。
在这里插入图片描述
在使用指导方面,ScottPlot 的操作指南(Cookbook)极具实用性,开发者只需编写几行简洁代码,就能快速创建折线图、柱状图、饼图、散点图等多种常用图表,极大降低了绘图开发的门槛,让新手也能轻松上手;而其示例演示(Demo)则聚焦图形用户界面(GUI)场景,生动展示了如何构建具备高级交互功能的绘图应用,无论是数据缩放、平移,还是图例切换、细节查看等交互需求,都能通过示例找到清晰的实现思路。更值得关注的是,ScottPlot 拥有广泛的环境兼容性,全面支持 Windows Forms、WPF、控制台应用,同时还能适配 Uno 平台、Blazor、Avalonia、Eto 以及 Notebook(笔记本应用)等多种开发场景,无论开发者专注于传统桌面应用、跨平台项目,还是 Web 开发、数据分析领域,都能在熟悉的环境中顺畅使用 ScottPlot 开展绘图工作。
在这里插入图片描述

功能说明

一、常规功能
自定义网格:对网格线进行高级样式定制
自定义刻度:灵活调整刻度线及刻度标签样式
杂项功能:涵盖各类实用小功能与自定义选项
多轴设置:支持刻度定制及多轴图表创建
颜色工具:包含内置颜色工具与相关功能,另有全颜色列表可查
调色板与颜色图:调色板用于分类数据配色,颜色图适用于连续数据的颜色渐变可绘图管理:学习在图表中添加、删除及重新排序绘图项
轴和刻度基础:轴标签与刻度的常见自定义方法示例
图例设置:配置图表角落的图例(关键说明)
绘图样式定制:自定义图表整体外观
示例数据生成:利用内置工具快速生成示例数据
直方图:将数据分组到区间(bin),展示各区间数据频率 / 计数,呈现数值分布
国际化适配:支持在不同文本、数字需求的文化场景中使用
核密度估计(KDE):估算直方图的概率密度函数(PDF),生成密度图
布局调整:自定义数据区域大小与图形填充效果
多图创建:制作包含多个子图的图表
回归分析:通过统计运算为数据拟合趋势线
快速入门:快速了解 ScottPlot 5 的基础核心功能

二、绘图类型
注释:在数据区域添加始终可见的文本标签
箭头:指向坐标空间中指定位置的箭头图形
轴线:标记轴上特定位置的线条
轴跨度:表示轴上某一范围的图形元素
条形图:以水平或垂直矩形呈现数据值
箱线图:直观展示数据分布特征
括号:在坐标空间中沿线条标注范围的括号图形
注解:带箭头的标签,用于标记图表上的特定点
等值线图:在二维平面上连接等值点,呈现三维函数表面
Coxcomb 图:特殊饼图,切片角度固定、半径可变
十字准线:组合水平与垂直轴线,标记坐标空间中的位置
椭圆:可定义中心及 X/Y 半径的曲线(圆为 X/Y 半径相等的特殊椭圆)
误差线:展示测量数据的可能取值范围
FillY 图:在指定 X 位置处,显示两个 Y 值之间的垂直范围
财务图:按时间区间展示价格数据
函数图:Y 值由 X 的函数定义(非离散数据点)的折线图
热图:将二维数据值以不同深浅的单元格图像呈现
图像添加:支持多种方式在图表中插入图像
交互式绘图:无需手动关联鼠标跟踪,可与鼠标交互的图表
线图:在坐标空间中绘制带起点、终点及可选线型的线条
实时数据图:如 DataLogger、DataStreamer,专为实时变化数据设计,可控制轴限制以显示最新数据(详见 ScottPlot 演示)
棒棒糖图:条形图变体,用 “茎(线)+ 头部(标记)” 表示数据点,视觉干扰更少
标记:在坐标空间特定位置添加标记点
相量图:在以原点为中心的径向轴上展示向量
饼图:以圆形切片呈现数据比例
极轴图:创建极轴,在圆形坐标系中展示数据
总体图:呈现单个数值集合的图表
雷达图(蜘蛛图 / 星形图):多轴围绕中心点圆形排列,以二维形状展示多轴数据径向
仪表图:以圆形仪表形式显示标量数据
比例尺:用线段展示水平 / 垂直范围,可作为轴刻度的简约替代方案
散点图:在坐标空间中展示 X/Y 位置对应的点
基础形状:可添加到图表中的各类基础几何形状
信号图:展示均匀间隔数据的图表
SignalConst:信号图的特殊类型,数据点不可变、内存占用较高,但对超大型数据集性能更优(适用于数百万数据点场景)
SignalXY 图:高性能绘图类型,优化 X 值升序的 X/Y 数据对,性能优于散点图(支持无序 X 点)、低于信号图(需固定 X 点间距)
史密斯圆图:创建史密斯圆轴,以水平轴(电阻)、垂直轴(电抗)展示射频信号阻抗
文本标签:在坐标空间指定位置添加文本
工具提示:指向图表中 X/Y 坐标的注释提示
三角轴图:创建三角轴,在三角坐标系中展示数据
矢量场:展示以坐标空间中点为起点的矢量集合

项目集成

无论你使用 Windows Forms、WPF、Blazor 还是控制台等开发环境,集成 ScottPlot 的核心流程均围绕 “安装依赖包→添加绘图代码→运行验证” 展开,以下分场景提供具体操作步骤:

一、通用前置步骤:通过 NuGet 安装 ScottPlot 包

这是所有.NET 项目集成 ScottPlot 的基础步骤,支持 Visual Studio、Rider 等主流 IDE,操作方式统一:
1.打开你的.NET 项目(如控制台应用、Windows Forms 应用等);
2.打开 “NuGet 包管理器”(Visual Studio 中可通过右键项目→“管理 NuGet 程序包” 打开);
3.在 “浏览” 栏搜索对应环境的 ScottPlot 包(关键!不同环境包名不同,避免装错),常见包名如下:
控制台 / 通用基础:ScottPlot(核心绘图功能,无 GUI 依赖)
Windows Forms:ScottPlot.WinForms(含 WinForms 专用绘图控件)WPF:ScottPlot.WPF(含 WPF 专用绘图控件)
Blazor:ScottPlot.Blazor(支持 Blazor Server/WASM)
Avalonia:ScottPlot.Avalonia(Avalonia 专用包)
选择最新稳定版,点击 “安装”,等待依赖包自动下载并配置到项目中。

二、分场景集成教程(附代码示例)

场景 1:控制台应用(无 GUI,生成图片文件)
适合快速生成图表并保存为图片(如 PNG/JPG),无需界面交互:

using ScottPlot;// 1. 创建绘图对象(设置图片尺寸,单位为像素)
var plt = new Plot(600, 400);
// 2. 准备测试数据(可替换为你的实际数据)
double[] x = { 1, 2, 3, 4, 5 };
double[] y = { 10, 25, 18, 30, 12 };
// 3. 添加图表(这里以折线图为例,其他图表类似)
plt.AddScatter(x, y, label: "销售数据", lineWidth: 2, markerSize: 8);
// 4. 配置图表样式(标题、坐标轴标签等)
plt.Title("月度销售趋势图");
plt.XLabel("月份");
plt.YLabel("销售额(万元)");
plt.Legend(); // 显示图例// 5. 保存为图片文件(路径可自定义,
//支持PNG、JPG、SVG等格式)
plt.SaveFig("sales_trend.png");
Console.WriteLine("图表已保存为 sales_trend.png");

运行项目后,会在输出目录生成sales_trend.png图片,打开即可查看图表。

场景 2:Windows Forms 应用(带 GUI 交互)

通过可视化控件实现交互式绘图(支持鼠标缩放、平移、悬停查看数据等):
添加绘图控件:安装ScottPlot.WinForms包后,打开 Windows Forms 设计器;
在 “工具箱” 中找到FormsPlot控件(若未显示,可右键工具箱→“选择项”→“浏览”→找到项目引用中的ScottPlot.WinForms.dll,添加后即可显示);将FormsPlot控件拖拽到窗体上,调整大小(如命名为formsPlot1)。
添加绘图代码(在窗体加载事件中编写):

using ScottPlot;
using ScottPlot.WinForms;
private void Form1_Load(object sender, EventArgs e){
// 1. 获取窗体上的FormsPlot控件
FormsPlot plt = formsPlot1;// 2. 准备数据(示例:柱状图数据)
string[] categories = { "A产品", "B产品", "C产品", "D产品" };
double[] values = { 45, 62, 38, 71 };
// 3. 添加柱状图(设置颜色、标签等)
var barPlot = plt.Plot.AddBar(values, categories);
barPlot.FillColor = Color.FromArgb(100, 54, 162, 235); // 半透明蓝色
// 4. 配置图表样式
plt.Plot.Title("产品销量对比");
plt.Plot.XLabel("产品类型");
plt.Plot.YLabel("销量(件)");
plt.Plot.Grid(enable: true, lineStyle: LineStyle.Dashed); 
// 显示虚线网格
// 5. 刷新控件,显示图表
plt.Refresh();}

运行项目后,窗体上会显示交互式柱状图,鼠标可缩放、平移,悬停时会显示具体数值。

三、常见问题与注意事项
1.包版本兼容性:确保 ScottPlot 包版本与你的.NET 框架版本匹配(如.NET 6/7/8 均支持最新版,.NET Framework 4.6 + 需选择对应兼容版);
2.大型数据集优化:若处理 10 万 + 数据点,建议使用ScottPlot的 “低延迟模式”(如plt.Axes.SetLowLatencyMode(true)),减少渲染卡顿;
3.自定义交互逻辑:如需添加按钮控制图表(如 “切换数据”“保存图片”),可通过调用Plot对象的方法实现(如plt.Clear()清空图表、plt.SaveFig()保存);
4.文档与示例参考:若需更多图表类型(如热力图、3D 图),可参考官方 Cookbook(ScottPlot Cookbook),包含上千个可直接复制的代码示例。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐