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 使用总结相关推荐

  1. OxyPlot 导出图片及 WPF 元素导出为图片的方法

    OxyPlot 导出图片及 WPF 元素导出为图片的方法 目录 OxyPlot 导出图片及 WPF 元素导出为图片的方法 一.OxyPlot 自带导出方法 二.导出 WPF 界面元素的方法 三.通过附 ...

  2. OxyPlot.Wpf 图表控件使用备忘

    OxyPlot.Wpf 图表控件使用备忘 目录 OxyPlot.Wpf 图表控件使用备忘 一.OxyPlot.Wpf 控件信息 二.基本概念 (一) PlotView 和 Plot (二) PlotM ...

  3. WPF 加OxyPlot 开发一个曲线图的小demo,设置最高点,最低点,平均值

    最近公司要求展示一个曲线图的控件,网上查了一下,都比较推荐OxyPlot 开源的这个库,所以就研究了一下.记录一下 1.首先需要从NuGet上下载相关的NuGut包,搜索OxyPlot.Wpf,进行安 ...

  4. WPF版OxyPlot的FontWeight

    写Html的时候Font的Weight是有数值的: 100, 900什么的. 但是在WPF里FontWeight被定义到一个类型里是分档的, 然后在OxyPlot绘图里比如TitleFontWeigh ...

  5. WPF 表格控件 ReoGrid 的简单使用

    WPF 表格控件 ReoGrid 的简单使用 目录 一.概述 二.安装 三.添加控件 四.加载 Excel 五.属性设置 六.支持触摸滚动 七.其它操作 1.显示和隐藏列 2.显示特定字体 八.资源链 ...

  6. OxyPlot.SkiaSharp中文显示乱码的问题

    oxyplot 图表控件功能强大,使用很广泛.最近考虑到性能使用OxyPlot.SkiaSharp替代OxyPlot.WPF,曲线图表初步测试,性能提升近10倍左右.基于SkiaSharp图形引擎的一 ...

  7. 【WPF】DataGrid多表头的样式设计

    需求 在使用WPF开发时,使用DataGrid列表显示数据时,有些字段可以进行分组显示,用于更好的表达它们之间存在的某种关系,因此就考虑到要对DataGrid的表头进行扩展,可以显示多行表头,让这些有 ...

  8. Oxyplot实时绘图学习笔记(上)

    (本项目来源于嵌入式系统实践课程项目) 目标 作为嵌入式系统的考核项目之一,我们小组选择项目是"基于串行通信的智能传感器和数据采集",我们拟开发的项目是"基于智能传感器的 ...

  9. 分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月14日-5月20日)

    分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月14日-5月20日) 本周Silverlight学习资源更新 MVVM设计模式相关--Silverlight商 ...

最新文章

  1. Spring Hibernate JPA 联表查询 复杂查询
  2. 258. Add Digits
  3. feture selection
  4. mclmcrrt77 matlab,mclmcrrt77.dll下载
  5. 腾讯视频中如何把视频进行收藏
  6. 使用多个tomcat如何修改端口号
  7. [大学回忆录-思想]一种能力的培养
  8. 消息中间件学习总结(21)——RocketMQ 消息丢失场景分析及如何解决!
  9. 关于firefox火狐中localStorage无法正常使用的问题
  10. hadoop工作流引擎azkaban
  11. 西门子S7-200的PLC,CPU224XP的模拟量接线怎样接
  12. 2022甘肃省安全员C证特种作业证考试题库及模拟考试
  13. tf data 常用操作
  14. OFC2020论文笔记 M1F.5 25.78-Gbit/s Burst-mode Receiver for 50G-EPON OLT
  15. html中js左右图片切换效果,JS实现图片切换特效
  16. JAVA实现逆波兰转换,java实现逆波兰式
  17. phpstudy后门代码利用及分析
  18. 区块链技术能否给跨境贸易带来新的机遇?
  19. Protel99 SE进行射频电路PCB设计的流程【转】
  20. 微信小程序App Page 模块化

热门文章

  1. SharePoint中修改密码的WEB Part之终极版:即可以修改AD,又可以修改本机用户密码的Web Part!!...
  2. 健康的身体是一切的保证 - 保护偶的颈椎!
  3. Cassandra使用的各种策略
  4. 【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
  5. 让我们来谈谈JDBC
  6. nvm 解决nodejs无法全局/usr/bin/node问题
  7. linux 网卡配置详情
  8. mysql添加定时器
  9. hdu 5092 Seam Carving
  10. LibreOffice 3.6.6 修复了 50 个 Bug