推荐一个支持多平台、多框架的.Net绘图库。

01 项目简介

OxyPlot是一个基于.NET开发的、跨平台的绘图库,可用于多种平台和框架,如WPF、Windows 8、Windows Phone、Windows Phone Silverlight、Windows Forms、Silverlight、GTK#、Xwt、Xamarin.iOS、Xamarin.Android、Xamarin.Forms和Xamarin.Mac等。它提供了丰富的绘图功能,可以用于创建各种类型的图表,如折线图、柱状图、饼图、散点图等。

02 使用方法

1、安装依赖库

Install-Package OxyPlot.Core

Install-Package OxyPlot.Core.Drawing

2、示例代码

using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Core.Drawing;
using OxyPlot.Series; class Program
{
static void Main(string[] args)
{
var outputToFile = "test-oxyplot-static-export-file.png";
var outputExportStreamOOP = "test-oxyplot-ExportToStream.png";
var outputExportFileOOP = "test-oxyplot-ExportToFile.png"; var width = 1024;
var height = 768;
var background = OxyColors.LightGray;
var resolution = 96d; var model = BuildPlotModel(); // 使用静态方法导出到文件
PngExporter.Export(model, outputToFile, width, height, resolution); // 使用实例方法导出
using (var stream = new MemoryStream())
{
var pngExporter = new PngExporter { Width = width, Height = height, Resolution = resolution };
pngExporter.Export(model, stream);
System.IO.File.WriteAllBytes(outputExportStreamOOP, stream.ToArray());
} var pngExporter2 = new PngExporter { Width = width, Height = height, Resolution = resolution };
var bitmap = pngExporter2.ExportToBitmap(model);
bitmap.Save(outputExportFileOOP, System.Drawing.Imaging.ImageFormat.Png);
bitmap.Save(Path.ChangeExtension(outputExportFileOOP, ".gif"), System.Drawing.Imaging.ImageFormat.Gif);
} private static IPlotModel BuildPlotModel()
{
var rand = new Random(21); var model = new PlotModel { Title = "蛋糕类型受欢迎程度" }; var cakePopularity = Enumerable.Range(1, 5).Select(i => rand.NextDouble()).ToArray();
var sum = cakePopularity.Sum();
var barItems = cakePopularity.Select(cp => RandomBarItem(cp, sum)).ToArray();
var barSeries = new BarSeries
{
ItemsSource = barItems,
LabelPlacement = LabelPlacement.Base,
LabelFormatString = "{0:.00}%"
}; model.Series.Add(barSeries); model.Axes.Add(new CategoryAxis
{
Position = AxisPosition.Left,
Key = "CakeAxis",
ItemsSource = new[]
{
"Apple cake",
"Baumkuchen",
"Bundt Cake",
"Chocolate cake",
"Carrot cake"
}
});
return model;
} private static BarItem RandomBarItem(double cp, double sum)
=> new BarItem { Value = cp / sum * 100, Color = RandomColor() }; private static OxyColor RandomColor()
{
var r = new Random();
return OxyColor.FromRgb((byte)r.Next(255), (byte)r.Next(255), (byte)r.Next(255));
}
}

3、效果

03 部分绘图效果

1、折线图

2、柱状图

3、热图

4、饼图

5、三角函数

04 项目地址

https://github.com/oxyplot/oxyplot

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

- End -

推荐阅读

DLL依赖关系查看工具:7个热门.Net开源项目!

Translumo:基于.NET开发的开源的屏幕实时翻译工具

推荐一个Star 1.3K报表.Net开源项目

MKL.NET:为.NET开发者提供高性能数学计算支持的开源库

基于.Net Core开发的GraphQL开源项目

OxyPlot:一个功能强大、漂亮.Net跨平台开源绘图库的更多相关文章

  1. 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观

    整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049

  2. WebLech是一个功能强大的Web站点下载与镜像工具

    WebLech是一个功能强大的Web站点下载与镜像工具.它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为.WebLech有一个功能控制台并采用多线程操作. http://sour ...

  3. cURL 是一个功能强大的PHP库。

    使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并把 ...

  4. SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件

    SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件. Why? 下拉刷新这样的控件.想必大家用的太多了,比方使用非常多的XListView等. 近期.项目中非常多列表都 ...

  5. 简单使用Laravel-admin构建一个功能强大的后台管理

    Laravel-admin可以快速构建一个功能强大的后台,方便快速开发. 以下内容记录简单使用Laravel-admin,以及遇到小错误的解决方法. Laravel-admin 依赖以下环境 需要提前 ...

  6. Probius:一个功能强大的自定义任务系统

    断更的这些日子,我又折腾了一个轮子,文末参考源码 大约在一年半以前写过一篇文章『探秘varian:优雅的发布部署程序』,里边有讲到我们采用类似lego的模块化方式来构建CICD的流程,虽能满足我们的需 ...

  7. 使用EF+ASP.NET MVC+Bootstrap开发一个功能强大的问卷调查系统

    功能简介 支持七大题型 下拉选择题.单选题.多选题.填空题.数字题.问答题.组合/矩阵题(单选组合.多选组合.填空组合.数字组合) 题库支持 每个问卷都要设置姓名.年龄.性别.学历,怎么办?题库帮您轻 ...

  8. Arduino Tian开发板:一个功能强大的天气预报中心

    每天都在出现新的连接设备. Arduino携手云平台一起加入这场战斗,于是出现了一个新的挑战者 - Arduino Tian! 使用python和经典Arduino框架,本教程将引导您将您的Ardui ...

  9. 介绍一个非常好用的跨平台C++开源框架:openFrameworks

    介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...

  10. opentwebst一个ie自动化操作测试软件-功能强大

    opentwebst一个ie自动化操作测试软件-功能强大 一个ie自动化操作测试软件,自动根据操作记录脚本.生成vbs,js和其他脚本语言,用来运行 里面包含了两个东西: 1.脚本操作自动记录,记录下 ...

随机推荐

  1. 3.14 深度剖析Linux硬链接和软链接,直击它们的本质!

    建立硬链接和软链接非常简单,那这两种链接有什么区别?它们都有什么作用?这才是链接文件最不容易理解的地方,我们分别来讲讲. ln创建硬链接 我们再来建立一个硬链接文件,然后看看这两个文件的特点. [ro ...

  2. Cursor使用

    Cursor是一款AI 代码编辑器,官网地址为https://www.cursor.com/,直接在官网下载安装即可,基于VS Code二次开发而来,之所以没有采用插件方式,在官方网站上给出的答案是某 ...

  3. mysql 批量重命名数据表、统一给表加前缀

    背景 一个本地数据库,里面有 90 个数据表.由于历史原因,现在需要批量给以前的数据表加上一个前缀.于是安排人吭哧吭呲的人工修改,耗费一天工时.过了几天,又需要把统一前缀去掉.内心早已问候 @¥#%% ...

  4. 5、oracle内存及进程操作讲解

    内存结构 1.shared pool 缓存着sql.sql执行计划 查询shared pool大小: select * from v$sga_dynamic_components; 2.buffer ...

  5. 敏捷开发:Scrum 中的 Product Backlog 介绍

    Product Backlog 产品待办列表 在计划开发产品功能时,都希望产品功能上线后,用户能够喜欢并经常使用. 因此在开发产品新功能时,就要衡量哪些产品需求是对用户最有价值,这是最应该思考的问题. ...

  6. .NET9 - 新功能体验(三)

    书接上回,我们继续来聊聊.NET9和C#13带来的新变化. 01.Linq新方法 CountBy 和 AggregateBy 引入了新的方法 CountBy 和 AggregateBy后,可以在不经过 ...

  7. 高性能计算-雅可比算法MPI通信优化(5)

    雅可比算法原理:如下图对方阵非边界元素求上下左右元素的均值,全部计算元素的数值计算完成后更新矩阵,进行下一次迭代. 测试目标:用MPI实现对8*8方阵雅可比算法迭代并行计算,用重复非阻塞的通信方式 # ...

  8. 查壳工具之Exeinfo PE

    简介 Exeinfo PE是一款免费.专业的程序查壳软件,可以查看exe.dll程序的编译信息,开发语言,是否加壳,壳的种类以及入口地址等信息. Exeinfo PE下载地址:https://gith ...

  9. 抓包工具之Charles(mac)

    下载地址:https://www.charlesproxy.com/download/ 因为软件是收费的,所以破解方式可以参考:https://www.zzzmode.com/mytools/char ...

  10. elasticsearch之python操作(非原生)

    elasticsearch 模块 Elasticsearch低级客户端.提供从Python到ES REST端点的直接映射. 连接集群节点 指定连接 es = Elasticsearch( ['172. ...