ScottPlot 从零上手:.NET 数据可视化 10 分钟出第一张图 ScottPlot 从零上手.NET 数据可视化 10 分钟出第一张图【免费下载链接】ScottPlotInteractive plotting library for .NET项目地址: https://gitcode.com/gh_mirrors/sc/ScottPlot手边有一份 200 行的销售 CSV下午要交一张趋势图。想在 .NET 里做数据可视化又不想为此临时啃一套绘图 API——ScottPlot 从装包到出图10 分钟能走完。它是什么ScottPlot 是一个 MIT 协议的 .NET 开源绘图库核心包只负责把数据画成位图再往上提供 WinForms、WPF、Avalonia、Blazor 等 UI 控件包负责把图嵌进窗口并支持缩放平移。它适合要几行代码出一张图的开发者。和 LiveCharts、OxyPlot 这类库的分水岭在于底层用 SkiaSharp 自绘不依赖宿主框架的绘图原语所以同一个Plot对象既能存 PNG也能塞进任何支持 SkiaSharp 的界面。装之前确认这几项.NET SDK 8 或更高版本先dotnet --list-sdks确认核心库同时支持 .NET Framework 4.6.2 与 .NET Standard 2.0你的项目是普通类库/控制台还是 UI 项目——决定装核心包还是连带控件包NuGet 源默认指向 nuget.org公司内网换源后也能搜到 ScottPlot若要改源码仓库为 https://gitcode.com/gh_mirrors/sc/ScottPlot 本地编译 src/ScottPlot5/ScottPlot5.sln渲染走 SkiaSharpWindows/macOS 开箱即用Linux 可能需要补字体库装完直接出图命令行安装在装好的项目目录里执行下面一条命令NuGet 会解析出 SkiaSharp 等依赖并写入 csprojPackage Manager Console 里的备选是Install-Package ScottPlot。dotnet add package ScottPlot最小出图示例下面这段代码创建 600x400 的图画一条二次曲线存成 PNG运行后工作目录会出现 quickstart.png打开确认坐标轴、网格、图线都正常即算跑通。var plt new ScottPlot.Plot(600, 400); double[] xs { 1, 2, 3, 4, 5 }; double[] ys { 1, 4, 9, 16, 25 }; plt.Add.Scatter(xs, ys); plt.SaveFig(quickstart.png);能画什么、能跑在哪图表类型API折线Add.Signal散点Add.Scatter柱状Add.BarPlot箱线Add.BoxPlot蜡烛Add.OHLC热图Add.Heatmap直方图Add.Histogram饼图Add.PieUI 框架控件包WinFormsFormsPlotScottPlot.WinFormsWPFWpfPlotScottPlot.WPFAvaloniaAvaPlotScottPlot.AvaloniaBlazorBlazorPlotScottPlot.Blazor操作系统覆盖 Windows、macOS、Linux不嵌界面的场景直接用核心包存图即可。按框架初始化WinForms 初始化差异控件包是 ScottPlot.WinForms把 FormsPlot 加到窗体并 Dock 为 Fill之后通过 Plot 属性画图每次改动后调 Refresh()。var fp new ScottPlot.WinForms.FormsPlot { Dock DockStyle.Fill }; fp.Plot.Add.Scatter(xs, ys); fp.Refresh();WPF 初始化差异控件包是 ScottPlot.WPFXAML 里要声明 wpf 命名空间C# 代码改图后调 Refresh() 重绘。xmlns:wpfclr-namespace:ScottPlot.WPF;assemblyScottPlot.WPF wpf:WpfPlot NameWpfPlot1 /WpfPlot1.Plot.Add.Scatter(xs, ys); WpfPlot1.Refresh();Blazor 初始化差异控件包是 ScottPlot.Blazorrazor 里放 BlazorPlot通过 ref 取到组件后在生命周期方法里加数据它和 WPF 的关键差别是多一次组件引用和一次显式 Refresh。BlazorPlot refPlot / code { ScottPlot.Blazor.BlazorPlot Plot; protected override void OnInitialized() Plot.Plot.Add.Scatter(xs, ys); }高频坑与解法现象编译报 SkiaSharp 程序集版本冲突或 TypeLoadException。根因工程里其他包引用了不同版本的 SkiaSharp运行时加载了错的那份。一行修复用包管理器把 ScottPlot 与 ScottPlot.* 全部统一升到 5.1.x让 NuGet 一并协调 SkiaSharp 版本。现象Linux 上窗体能打开但图区空白。根因缺少 libfontconfig 等 SkiaSharp 运行库。一行修复sudo apt install libfontconfig1 fontconfig重开应用即恢复。现象百万点散点拖拽缩放明显卡顿。根因Scatter 每帧对全部点逐点连线Signal 数据源有分段 min/max 缓存同规模下开销低得多。一行修复把Add.Scatter(xs, ys)换成Add.Signal(ys)交互立刻恢复流畅。现象标题里中文或希腊字母渲染成方块。根因系统没有对应字形SkiaSharp 找不到 CJK 字体。一行修复Linux 上先装fonts-noto-cjk再在代码里把plt.Fonts.Default指定为系统中真实存在的中文字体名。延伸阅读官方文档站 scottplot.net查 API 语义、交互行为和跨框架差异以在线文档为准Cookbook 示例仓库内src/ScottPlot5/ScottPlot5 Cookbook/Recipes/按图表类型组织的可运行代码照着抄最快演示项目src/ScottPlot5/ScottPlot5 Demos/各框架下的完整交互窗口确认控件行为时可对照核心库源码src/ScottPlot5/ScottPlot5/Plottables/每个 Plottable 一个文件需要改渲染逻辑时从这里下手【免费下载链接】ScottPlotInteractive plotting library for .NET项目地址: https://gitcode.com/gh_mirrors/sc/ScottPlot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

Python动态地图制作:从时空数据到铁路网络演变可视化

Python动态地图制作:从时空数据到铁路网络演变可视化

最近在整理数据可视化项目时,发现一个很有意思的案例:如何用动态地图来展示德国铁路网络的历史演变。这种“时间推移”(Timelapse)地图,不仅能直观看到铁路网的扩张与收缩,更能从一个侧面反映区域发展、经济…

2026/8/25 1:58:55
从被动使用到主动驾驭:AI时代开发者的工程化协作指南

从被动使用到主动驾驭:AI时代开发者的工程化协作指南

最近在技术社区和开发者交流中,我注意到一个有趣的现象:当“人工智能”从一个前沿概念变成日常开发工具,甚至成为项目需求文档里的标配时,许多开发者,包括我自己,反而开始对它“视而不见”。这并非指我们不…

2026/8/25 1:58:55
VideoDownloadHelper 网页视频下载完整指南:3 个真实场景 + 安装、排坑一次讲清

VideoDownloadHelper 网页视频下载完整指南:3 个真实场景 + 安装、排坑一次讲清

VideoDownloadHelper 网页视频下载完整指南:3 个真实场景 安装、排坑一次讲清 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 点…

2026/8/25 1:58:55
学生心理咨询数据集:具有背景属性的大学生心理健康对话

学生心理咨询数据集:具有背景属性的大学生心理健康对话

摘要:学生心理咨询数据集是一个面向大学生心理健康分析与智能咨询研究的数据集,包含4000条心理咨询互动记录和15个字段。数据集概述学生心理咨询数据集是一个面向大学生心理健康分析与智能咨询研究的数据集,包含4000条心理咨询互动记录和15个…

2026/8/25 1:58:55
GBDT 与 XGBoost 知识点总结

GBDT 与 XGBoost 知识点总结

一、GBDT 与 XGBoost 核心对比对比维度sklearn GBDTXGBoost损失函数原理仅利用一阶负梯度拟合二阶泰勒展开,精度更高正则化能力仅靠树深、叶子最小样本数等基础控制额外支持 L1、L2 正则化,正则体系更完善分裂增益计算基于 MSE 减少量计算基于加入正则项…

2026/8/25 1:58:55
面向AI的逆向工程:从二进制到结构化语义图谱的范式转变与实践

面向AI的逆向工程:从二进制到结构化语义图谱的范式转变与实践

在实际软件开发和信息安全领域,源代码逆向工程是一个既古老又不断演进的技术方向。传统上,它的目标是将编译后的二进制文件(如可执行程序、动态链接库、APK安装包等)转换回人类可读的源代码或近似源代码的高级表示形式&#xff0c…

2026/8/25 1:53:54