OxyPlot:一个功能强大、漂亮.Net跨平台开源绘图库
推荐一个支持多平台、多框架的.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 -
推荐阅读
Translumo:基于.NET开发的开源的屏幕实时翻译工具
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~