WPF oxyPlot 使用总结
oxyPlot能够简易的创建图表并且该库也在Github上面开源直通门。以下是笔者基础使用总结。本文例子的源码下载
1、安装与引用
新建一个wpf应用程序,然后使用Nuget控制台安装OxyPlot和OxyPlot.wpf直接键入。
Install-Package Oxyplot Install-Package Oxyplot.Wpf
你也可以在应用程序-->“引用”-->"右键"-->"管理Nuget包"进行检索oxyplot关键字,可以看到相应的类库引用。(吐槽下:Nuget访问很慢)
你也可以直接通过上面的直通门去下载最新的源码自己编译。
到此,已经将Oxyplot的类库引用到指定的应用程序上。
2、 创建PlotViewModel简易画曲线
在OxyPlot内部可以通过Serial进行定义图表,包含:LineSerial(线条--可以通过定义点进行画线条)、FunctionSerial(函数曲线)、AreaSerial(区域)、StairSerial等,笔者就只用到前两者。
接下来实现一个画直线以及sin(x)的函数线的例子进行说明。
在PlotViewModel内部添加SimplePlotModel属性(类型:PlotModel),并且在PlotViewMode构造函数内部进行实例化,同时将定义好的直线以及sin(x)函数线添加该属性上。在MainWindow.xaml进行定义PlotView标签,同时绑定SimplePlotModel。具体的实现如下代码
PlotViewModel构造函数
public PlotViewModel(){SimplePlotModel=new PlotModel();//线条var lineSerial = new LineSeries() { Title="直线实例"};lineSerial.Points.Add(new DataPoint(0, 0));lineSerial.Points.Add(new DataPoint(10, 10));SimplePlotModel.Series.Add(lineSerial);//函数sin(x)var funcSerial = new FunctionSeries((x) => { return Math.Sin(x); }, 0, 10, 0.1, "y=sin(x)");SimplePlotModel.Series.Add(funcSerial);}
MainWindow.xmal
<Grid><oxy:PlotView Model="{Binding Path= SimplePlotModel}"></oxy:PlotView></Grid>/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{private PlotViewModel _viewModel;public MainWindow(){InitializeComponent();_viewModel = new PlotViewModel();//画直线this.DataContext = _viewModel;}}
将会得到如下图所示的图标
3、定制坐标轴
在OxyPlot可以通过Axes进行自定义坐标轴,其中包含了LinearAxis、DateAxis、LogarithmicAxis、 CategoryAxis等比较实用的坐标轴
我们可以直接定义一个LinearAxis进行定义X、Y轴从0开始,最大10,如下例举比较常用的坐标轴属性(PS:x轴的设置想类似),效果如下图所示
//定义y轴LinearAxis leftAxis = new LinearAxis(){Position=AxisPosition.Left,Minimum=0,Maximum=10,Title = "Y轴",//显示标题内容TitlePosition = 1,//显示标题位置TitleColor = OxyColor.Parse("#d3d3d3"),//显示标题位置IsZoomEnabled = false,//坐标轴缩放关闭IsPanEnabled = false,//图表缩放功能关闭//MajorGridlineStyle = LineStyle.Solid,//主刻度设置格网//MajorGridlineColor = OxyColor.Parse("#7379a0"),//MinorGridlineStyle = LineStyle.Dot,//子刻度设置格网样式//MinorGridlineColor = OxyColor.Parse("#666b8d")};
4、实时动态添加曲线
现实当中我们比较常用的实时获取数据生成曲线,所以我们可以通过调用SimplePlotModel.InvalidatePlot(true)进行刷新xmal上的图像。笔者只以简单的直线添加点进行动态生成线条,相应的代码如下所示:
var rd = new Random();Task.Factory.StartNew(() =>{while (true){var x = rd.NextDouble() * 1000 % 10;var y = rd.NextDouble() * 50 % 9;lineSerial.Points.Add(new DataPoint(x, y));SimplePlotModel.InvalidatePlot(true);Thread.Sleep(500);}});
5、本文例子的源码下载
源码 (如果觉得不错请点赞下,有误的话请指出,卤鸽在此感谢)
参考材料
http://blog.csdn.net/coolfeiweb/article/details/23454141?utm_source=tuicool
http://oxyplot.org/documentation
转载于:https://www.cnblogs.com/luge/p/Wpf_Oxyplot_Sample.html
WPF oxyPlot 使用总结相关推荐
- OxyPlot 导出图片及 WPF 元素导出为图片的方法
OxyPlot 导出图片及 WPF 元素导出为图片的方法 目录 OxyPlot 导出图片及 WPF 元素导出为图片的方法 一.OxyPlot 自带导出方法 二.导出 WPF 界面元素的方法 三.通过附 ...
- OxyPlot.Wpf 图表控件使用备忘
OxyPlot.Wpf 图表控件使用备忘 目录 OxyPlot.Wpf 图表控件使用备忘 一.OxyPlot.Wpf 控件信息 二.基本概念 (一) PlotView 和 Plot (二) PlotM ...
- WPF 加OxyPlot 开发一个曲线图的小demo,设置最高点,最低点,平均值
最近公司要求展示一个曲线图的控件,网上查了一下,都比较推荐OxyPlot 开源的这个库,所以就研究了一下.记录一下 1.首先需要从NuGet上下载相关的NuGut包,搜索OxyPlot.Wpf,进行安 ...
- WPF版OxyPlot的FontWeight
写Html的时候Font的Weight是有数值的: 100, 900什么的. 但是在WPF里FontWeight被定义到一个类型里是分档的, 然后在OxyPlot绘图里比如TitleFontWeigh ...
- WPF 表格控件 ReoGrid 的简单使用
WPF 表格控件 ReoGrid 的简单使用 目录 一.概述 二.安装 三.添加控件 四.加载 Excel 五.属性设置 六.支持触摸滚动 七.其它操作 1.显示和隐藏列 2.显示特定字体 八.资源链 ...
- OxyPlot.SkiaSharp中文显示乱码的问题
oxyplot 图表控件功能强大,使用很广泛.最近考虑到性能使用OxyPlot.SkiaSharp替代OxyPlot.WPF,曲线图表初步测试,性能提升近10倍左右.基于SkiaSharp图形引擎的一 ...
- 【WPF】DataGrid多表头的样式设计
需求 在使用WPF开发时,使用DataGrid列表显示数据时,有些字段可以进行分组显示,用于更好的表达它们之间存在的某种关系,因此就考虑到要对DataGrid的表头进行扩展,可以显示多行表头,让这些有 ...
- Oxyplot实时绘图学习笔记(上)
(本项目来源于嵌入式系统实践课程项目) 目标 作为嵌入式系统的考核项目之一,我们小组选择项目是"基于串行通信的智能传感器和数据采集",我们拟开发的项目是"基于智能传感器的 ...
- 分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月14日-5月20日)
分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月14日-5月20日) 本周Silverlight学习资源更新 MVVM设计模式相关--Silverlight商 ...
最新文章
- Spring Hibernate JPA 联表查询 复杂查询
- 258. Add Digits
- feture selection
- mclmcrrt77 matlab,mclmcrrt77.dll下载
- 腾讯视频中如何把视频进行收藏
- 使用多个tomcat如何修改端口号
- [大学回忆录-思想]一种能力的培养
- 消息中间件学习总结(21)——RocketMQ 消息丢失场景分析及如何解决!
- 关于firefox火狐中localStorage无法正常使用的问题
- hadoop工作流引擎azkaban
- 西门子S7-200的PLC,CPU224XP的模拟量接线怎样接
- 2022甘肃省安全员C证特种作业证考试题库及模拟考试
- tf data 常用操作
- OFC2020论文笔记 M1F.5 25.78-Gbit/s Burst-mode Receiver for 50G-EPON OLT
- html中js左右图片切换效果,JS实现图片切换特效
- JAVA实现逆波兰转换,java实现逆波兰式
- phpstudy后门代码利用及分析
- 区块链技术能否给跨境贸易带来新的机遇?
- Protel99 SE进行射频电路PCB设计的流程【转】
- 微信小程序App Page 模块化
热门文章
- SharePoint中修改密码的WEB Part之终极版:即可以修改AD,又可以修改本机用户密码的Web Part!!...
- 健康的身体是一切的保证 - 保护偶的颈椎!
- Cassandra使用的各种策略
- 【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
- 让我们来谈谈JDBC
- nvm 解决nodejs无法全局/usr/bin/node问题
- linux 网卡配置详情
- mysql添加定时器
- hdu 5092 Seam Carving
- LibreOffice 3.6.6 修复了 50 个 Bug