OxyPlot.Wpf 图表控件使用备忘

OxyPlot.Wpf 图表控件使用备忘

目录

OxyPlot.Wpf 图表控件使用备忘

一、OxyPlot.Wpf 控件信息

二、基本概念

(一) PlotView 和 Plot

(二) PlotModel

(三) Axes

(四) Series

(五) Tracker

三、样式设置

(一) 效果对比

(二) 图表边框和数据线条样式

(三) 坐标轴样式

(四) 自定义 Tracker

四、装配和数据填充

五、示例代码

独立观察员 2021 年 5 月 21 日

一、OxyPlot.Wpf 控件信息

GitHub:https://github.com/oxyplot/oxyplot

官方文档地址:https://oxyplot.readthedocs.io/en/latest/index.html

使用版本:NuGet 版 2.0.0

参考文章:《OxyPlot 在 wpf 中绘制实时动态曲线【更新 2.0 去掉 Smooth 属性】》

 

二、基本概念

(一) PlotView 和 Plot

界面上有两种使用方法:

(1)使用 PlotView(界面简单,设置都在代码中)

 

(2)使用 Plot (坐标轴、线条等都在界面上设置)

 

我们使用第一种方法。

 

(二) PlotModel

PlotView 的 Model 属性需绑定一个 PlotModel 对象,它包含了整个图表的各种信息,比如边框、数据线条、坐标轴、图示 等。

 

绑定的属性可按如下定义:

 

(三) Axes

Axes 就是坐标轴集合,可分别添加四个方向的坐标轴,如果没有自行添加,默认会有一个底部的横坐标和一个左侧的纵坐标。

坐标轴也有好几种类型:

 

本文使用的是 LinearAxis:

 

(四) Series

Series 代表了一组数据,有很多种类型:

 

本文以 线条(LineSeries)为例:

 

注释部分是指定平滑模式,开启平滑模式后,两点之间以曲线相连,性能会降低;

关闭平滑模式,两点之间以直线相连,也就是形成折线图。

 

(五) Tracker

Tracker 指的是可浮现的线条上点的信息框,可以理解为 ToolTip 。Tracker 是属于 Series 的。

默认是按住鼠标左键,然后移动到点上,显示 Tracker 。

可使用如下代码改为鼠标移上就显示(其中 _PlotView 为 PlotView 控件对象):

 

三、样式设置

(一) 效果对比

默认样式如下(不包括标题和坐标轴标题):

 

Tracker 默认样式如下:

 

可通过设置,改为如下样式:

 

(二) 图表边框和数据线条样式

 

图表边框四边的宽度可分别设置,某一边的边框设为 0 时,相应的坐标轴线样式才有效果。不过坐标轴线条好像有点 Bug,所以此处还是使用边框线来替代坐标轴线。

 

(三) 坐标轴样式

 

分别设置左侧和底部的坐标轴,可进行缩放、平移、刻度线、网格线的开关和设置等。

 

(四) 自定义 Tracker

自定义 Tracker 在界面上设置,通过设置 Tracker 的控件模板来完成:

 

更多样式可参考该控件库的示例代码:

 

四、装配和数据填充

样式设置完成后,将坐标轴和线条装入 PlotModel 中:

 

数据填充到线条的 Points 中,ResetAllAxes () 方法可重置坐标轴,InvalidatePlot () 方法刷新数据:

 

五、示例代码

代码地址:https://gitee.com/dlgcy/DLGCY_OxyPlotTester

发行版下载:https://gitee.com/dlgcy/DLGCY_OxyPlotTester/releases

说明:该项目使用 WPFTemplate 搭建,如果要克隆代码,注意需进行 Git 子模块拉取操作。

程序界面:

WPF

【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF

WPF 使用 Expression Design 画图导出及使用 Path 画图

WPF MVVM 弹框之等待框

解决 WPF 绑定集合后数据变动界面却不更新的问题(使用 ObservableCollection)

WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面

真・WPF 按钮拖动和调整大小

WPF MVVM 模式下的弹窗

WPF 让一组 Button 实现 RadioButton 的当前样式效果

WPF 原生绑定和命令功能使用指南

WPF 用户控件的自定义依赖属性在 MVVM 模式下的使用备忘

在WPF的MVVM模式中使用OCX组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

造作吧,Python快速入门!

双十一的刀口还没愈合,双十二的折扣又戳到了胸口。买买买,还是小天最懂你看看小天都准备了什么!课程限时优惠,网易云课堂平台优惠券,优惠叠加,课程包更享折上折!双十二年终钜惠,还犹…

C# Hashtable和Dictionary区别

Hashtable和Dictionary都是.Net下的表示键值对的集合&#xff0c;那么我们在使用中该选择Hashtable还是Dictionary&#xff1f;下边我们看看他们之间的区别&#xff1a;1、Dictionary<K,V>在使用中是顺序存储的&#xff0c;而Hashtable由于使用的是哈希算法进行数据存储&…

java中如何运行小程序_一起学java(一)——运行第一个小程序

接下来的一段时间内会更新一起学java系列&#xff0c;喜欢的关注一下我吧。微信公众号&#xff1a;什么都不懂的大佬&#xff1b;初学&#xff0c;有错误的地方请大家多多指教。---------------分割线--------------一. 什么是java&#xff1f;java是一门面向对象的计算机编程语…

一分钟教你用Excel从统计局抓数据!

全世界只有3.14 % 的人关注了数据与算法之美现在呢&#xff0c;从网上爬虫数据来做分析越来越火&#xff0c;如果不会这个skillset做数据处理简直没办法装逼。作为一个兴趣广泛的高能物理phd&#xff0c;自然不能被时代落下。首先声明&#xff0c;我并没有学过HTML的语言&#…

记一次 .NET 某HIS系统后端服务 内存泄漏分析

一&#xff1a;背景 1. 讲故事前天那位 his 老哥又来找我了&#xff0c;上次因为CPU爆高的问题我给解决了&#xff0c;看样子对我挺信任的&#xff0c;这次另一个程序又遇到内存泄漏&#xff0c;希望我帮忙诊断下。其实这位老哥技术还是很不错的&#xff0c;他既然能给我dump&a…

freemarker 内置函数

2019独角兽企业重金招聘Python工程师标准>>> 在我们应用Freemarker过程中&#xff0c;经常会操作例如字符串&#xff0c;数字&#xff0c;集合等&#xff0c;却不清楚Freemrker有没有类似于Java一样有相关的类及方法。在本文当中&#xff0c;我将向大家详细的介绍Fr…

专业学习频道,欢迎关注数锐学堂

数锐学堂简介&#xff1a;致力于深耕数学领域的科普学习、竞赛、机器学习等算法技能应用优质课程&#xff0c;精心打造一站式的数学垂直领域教育服务。长按二维码可以关注如果识别二维码有问题请搜索微信号&#xff1a;supermodeling

在非容器(集群)环境下运行dapr

作者&#xff1a;李俱顺原文&#xff1a;https://www.4async.com/2021/03/2021-03-11-running-dapr-without-container/前一段时间一直关注的dapr正式发布了v1.0版本(实际上本文发布时还更新了v1.0.1)&#xff0c;代表dapr在某些程度上进入稳定状态&#xff0c;可以尝试在实际中…

【Silverlight5矢量打印】如何用C#代码检测打印机和驱动是否支持PostScript

Silverlight5支持PostScript矢量打印&#xff0c;矢量打印相比于位图打印速度更快&#xff0c;生成的打印文件更小。SL5默认会采用PS矢量打印&#xff0c;如果打印机不支持&#xff0c;自动切换到位图打印。 虽然微软SL打印组认为PS已经相当普遍&#xff0c;但我想大多数打印机…

用魔法打开科学,孩子惊叫连连,想不爱科学都难!

随着当今科技快速发展&#xff0c;和大家对于人工智能快速崛起的担忧&#xff0c;父母们对于孩子科学能力的培养&#xff0c;已经紧锣密鼓的提上了早教日程。看看近两年早教市场里火爆的课程&#xff0c;“少儿编程”、“儿童机器人教育”、“儿童STEAM课程”等等便是印证了这一…

java反射 获取局部变量_Java反射:如何获取变量的名称?

呼唤远方如果您使用以下的调试信息进行编译&#xff1a;javac -g)&#xff0c;局部变量的名称保存在.class文件中。例如&#xff0c;以这个简单的类为例&#xff1a;class TestLocalVarNames {public String aMethod(int arg) {String local1 "a string";StringBuil…

svn服务端及客户端搭建和使用(三)

接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等.添加文件在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态,如图:这时候,你需要告知TortoiseSVN你的操作,如图:加入以后,你的文件会变成这个状态,如图:这时…

Python的小宇宙,怎么样才能发挥出来?

随着科技的发展&#xff0c;计算机对人类的生产活动和社会活动产生了极为重要的影响&#xff0c;同时以强大的生命力飞速发展着。目前计算机正广泛用于社会各个领域&#xff0c;并朝着微型化、网络化、智能化和巨型化的方向前进。而随着计算机飞速发展的背后&#xff0c;人工智…

面试腾讯,过了~

大概需要10分钟。原谅下&#xff0c;又标题党了&#xff0c;不过这篇会提到我应届面试腾讯的经历。前两天在朋友圈发了一条动态&#xff1a;要做读者朋友的指路小火苗&#xff0c;很多人在状态下留言&#xff1a;为啥不是指路明灯&#xff1f;为啥不是小油灯&#xff1f;原因很…

传说中理科生看到会沉默、文科生看到会流泪的【程序员文史综合题目】

全世界只有3.14 % 的人关注了数据与算法之美一、单选题1、以下谁是二进制思想的最早提出者&#xff1f;a&#xff0c;伏羲&#xff1b;b&#xff0c;姬昌&#xff1b;c&#xff0c;莱布尼茨&#xff1b;d&#xff0c;柏拉图。2、以下哪个概念和公孙龙的《指物论》中的“指”字含…

智能制造建设方案

随着新一轮工业革命的发展&#xff0c;工业转型的呼声日渐高涨。面对信息技术和工业技术的革新浪潮&#xff0c;美国人出台了先进制造业回流计划&#xff0c;提出了工业互联网战略&#xff0c;德国人提出了工业4.0战略&#xff0c;中国加紧推进两化深度融合&#xff0c;并发布了…

深入LINQ | 动态构建LINQ表达式

原文&#xff1a;bit.ly/3fwlKQJ作者&#xff1a;Jeremy Likness译者&#xff1a;精致码农-王亮LINQ 是 Language Integrated Query&#xff08;语言集成查询&#xff09;的缩写&#xff0c;是我最喜欢的 .NET 和 C# 技术之一。使用 LINQ&#xff0c;开发者可以直接在强类型代码…

java查找字符的方法_Java字符串查找(3种方法)

在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式&#xff1a;一种是在字符串中获取匹配字符(串)的索引值&#xff0c;另一种是在字符串中获取指定索引位置的字符。根据字符查找String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取匹…

2018 Kaggle 报告:在技术领域,女性从业者持续减少,00后开始展露头脚

全世界只有3.14 % 的人关注了数据与算法之美就在上个月&#xff0c;Kaggle社区发布了《2018 Kaggle机器学习和数据科学调研》&#xff0c;调研结果显示&#xff1a;在技术领域&#xff0c;女性从业者持续减少&#xff1b;00后开始登上从业舞台&#xff1b;而且&#xff0c;23%受…

Nuget Package 支持打包 ReadMe 了

Nuget Package 支持打包 ReadMe 了Intro在 3月份&#xff0c;我们在NuGet生态系统状态上发布了一个博客&#xff0c;其中讨论了过去六个月以来从数百名客户那里获得的见解。客户在我们的调查中发现的最大问题之一是&#xff0c;“大多数软件包的文档不足”&#xff0c;可以从Nu…