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
WPF oxyPlot 使用总结的更多相关文章
- 用OxyPlot在WPF中演示正演磁异常的变化规律
为了在展示实验成果时动态演示理论球体磁异常随其埋深.磁化倾角的变化规律,我用WPF写了一个小程序来作演示. MatLab计算磁异常数据 首先是计算理论球体磁异常数据,在Matlab中可以很方便地计算. ...
- 使用OxyPlot在WPF中创建图表
目录(?)[+] Using Nuget 包括OxyPlot在你的应用程序的最简单方法是使用NuGet包管理器在Visual Studio 运行 Visual Studio并开始创建一个新的WPF项目 ...
- 【WPF】 OxyPlot图表控件学习
最近在学习OxyPlot图表控件,一些基本的学习心得,在这里记录一下,方便以后进行查找. 一.引用 OxyPlot控件可以直接在VS的 " Nuget " 里面下载 选择: ...
- WPF DataGrid OxyPlot 卡顿优化
不是优化,我是想用这个标题吸引遇到相同问题的同学过来看看. UI如下,左边DataGrid有7列,右边OxyPlot显示折线图 列表4000+数据,折线图4000+个点,页面卡的用不了. 体现就是列表 ...
- WPF如何实现一个漂亮的页签导航UI
最近看到一个比较漂亮的UI主界面,该UI是用左边的页签进行导航,比较有特色,就想着尝试用WPF来实现一下.经过一番尝试,基本上将UI设计图的效果用WPF程序进行了实现.下面介绍一下主要的思路: 1 U ...
- C#使用Oxyplot绘制监控界面
C#中可选的绘图工具有很多,除了Oxyplot还有DynamicDataDisplay(已经改名为InteractiveDataDisplay)等等.不过由于笔者这里存在一些环境上的特殊要求,.Net ...
- OxyPlot.SkiaSharp显示中文乱码的问题
oxyplot 图表控件功能强大,使用很广泛.最近考虑到性能使用OxyPlot.SkiaSharp替代OxyPlot.WPF,曲线图表初步测试,性能提升近10倍左右.基于SkiaSharp图形引擎的一 ...
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
- MVVM框架从WPF移植到UWP遇到的问题和解决方法
MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...
随机推荐
- jqeury datatable
1.自定义列信息 "aoColumnDefs":[ { ...
- Dynamic CRM2016在一台本地服务器安装部署
在本地单独一台服务器上安装部署CRM2016时需要提前安装好CRM软件需要的必备软件,具体需要安装的组件如下截图:其中required为必须具备的安装组件.license可以采用微软官网的90天测试版 ...
- clang format 自定义样式常用参数说明
常用的格式设置: #如果为真(true),分析格式化过的文件中最常见的&和*的对齐方式.然后指针对齐仅作为回退 DerivePointerAlignment: false #缩进宽度 Inde ...
- VS2010安装异常中断后无法安装的解决方法(安装时发生严重错误)
最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看. 之前开发环境:ArcGIS9.3,ArcEngine9.3,Oracle10g,Ar ...
- Sublime 保存时自动转换tab成空格
笔者最近学习c, c语言的清新代码风格让人眼前一亮,不禁爱上这种写作风格,变量名.等号.常量值之间空格分隔,清爽便于阅读. 于是笔者以此为代码写作规范,查阅自己以前写的java代码,以下用notepa ...
- mysql root 密码丢失问题
root密码丢失,我们需要将mysql以不检查权限的方式重新启动. 在mysql的配置文件(/etc/my.cnf)中,[mysqld]下添加一句skip-grant-tables,然后重新启动服务, ...
- Java集合类之ArrayList
学习Java的集合类 (1)成员变量以及初始化 private static final int DEFAULT_CAPACITY = 10; private static final Object[ ...
- ini_set 设置php配置项 在windows和linux下的不同
在win下,当你要include多个路径的话,你要用“:”隔开,但在linux下就使用":"隔开的.. if (substr(php_uname(), 0, 7) == " ...
- iOS 1 到 iOS 10 ,我都快老了
iOS 1:iPhone诞生 虽然很难想像,但初代iPhone在问世时在功能方面其实远远落后于那时的竞争对手,比如Windows Mobile.Palm OS.塞班.甚至是黑莓.它不支持3G.多任务. ...
- Ubuntu 12.04(32位)安装Oracle 11g(32位)
安装过程(主要过程就直接copy别人的教程了)及问题: 1.将系统更新到最新: sudo apt-get updatesudo apt-get dist-upgrade 2. 如果使用的Ubuntu不 ...