pyqtgraph自定义坐标轴
这个类其实是asammdf gui里的,稍微做了下修改,我要实现是显示datetime类型的时间,由于pyqtgraph中的AxisItem支持数字型,所以,绘制的时候是不能传datetime类型的,只能传时间戳,然后刻度显示的字符串可以由时间戳转成datetime样式的字符串,具体实现如下
# -*- coding: utf-8 -*-from datetime import datetime, timedelta, timezone
from textwrap import wrapLOCAL_TIMEZONE = datetime.now(timezone.utc).astimezone().tzinfoimport numpy as np
import pandas as pd
import pyqtgraph as pgfrom utils import get_datetime_strlistclass FormatedAxis(pg.AxisItem):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.format = "phys"self.mode = "phys"self.text_conversion = Noneself.origin = Noneself.date_str = kwargs.get("date_str")def tickStrings(self, values, scale, spacing):strns = []if self.text_conversion and self.mode == "phys":strns = []for val in values:nv = self.text_conversion.convert(np.array([val]))[0]val = float(val)if val.is_integer():val = int(val)if self.format == "hex":val = hex(int(val))elif self.format == "bin":val = bin(int(val))else:val = str(val)else:val = f"{val:.6f}"if isinstance(nv, bytes):try:strns.append(f'{val}={nv.decode("utf-8")}')except:strns.append(f'{val}={nv.decode("latin-1")}')else:strns.append(val)else:if self.format == "phys":strns = super(FormatedAxis, self).tickStrings(values, scale, spacing)elif self.format == "hex":for val in values:val = float(val)if val.is_integer():val = hex(int(val))else:val = ""strns.append(val)elif self.format == "bin":for val in values:val = float(val)if val.is_integer():val = bin(int(val))else:val = ""strns.append(val)elif self.format == "time":strns = [str(timedelta(seconds=val)) for val in values]elif self.format == "date":strns = (pd.to_datetime(np.array(values) + self.origin.timestamp(), unit="s").tz_localize("UTC").tz_convert(LOCAL_TIMEZONE).astype(str).to_list())elif self.format == "datetime":strns = [str(datetime.fromtimestamp(v)) for v in values]return [val[:80] for val in strns]def setLabel(self, text=None, units=None, unitPrefix=None, **args):"""overwrites pyqtgraph setLabel"""show_label = Falseif text is not None:self.labelText = textshow_label = Trueif units is not None:self.labelUnits = unitsshow_label = Trueif show_label:self.showLabel()if unitPrefix is not None:self.labelUnitPrefix = unitPrefixif len(args) > 0:self.labelStyle = argsself.label.setHtml(self.labelString())self._adjustSize()self.picture = Noneself.update()def mouseDragEvent(self, event):if self.linkedView() is None:returnif self.orientation in ["left", "right"]:return self.linkedView().mouseDragEvent(event)else:return self.linkedView().mouseDragEvent(event)
其实就加了个datetime格式,然后把values转成datetime再转成str,绘制数据传的还是时间戳。
elif self.format == "datetime":strns = [str(datetime.fromtimestamp(v)) for v in values]
这里主要是借鉴一下自定义坐标轴的实现思路了。
pyqtgraph自定义坐标轴相关推荐
- R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度、增加坐标轴刻度的粒度、更加精细地表达
R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度.增加坐标轴刻度的粒度.更加精细地表达 目录
- plotly可视化绘制多子图(subplots)并自定义坐标轴
plotly可视化绘制多子图(subplots)并自定义坐标轴 # 多子图并自定义坐标轴 from plotly import tools import plotly as py import plo ...
- 【转】Unity Scene场景自定义坐标轴
[转]Unity Scene场景自定义坐标轴 来自:https://blog.csdn.net/cheng624/article/details/70859054 多看看别人的代码是没有坏处的,即使学 ...
- echarts 柱状图不显示y坐标轴_Python+matplotlib自定义坐标轴位置、颜色、箭头
图书推荐: <Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等 ...
- Python+matplotlib自定义坐标轴位置、颜色、箭头
容易的事.例如下面的代码: 绘制结果为: 虽然确实几行代码就画出了正弦曲线,但是这个图也太朴素了,如果我们想得到下面这样的结果,该如何实现呢? 上面图形中的难点在于坐标轴的箭头,可以使用axisart ...
- Python-Matplotlib可视化(6)——自定义坐标轴让统计图清晰易懂
Python-Matplotlib可视化(6)--自定义坐标轴让统计图清晰易懂 前言 控制刻度间距 控制刻度标签 更简单的设置方式 高级刻度标签控制 使用对数刻度 使用极坐标 系列链接 前言 在系列博 ...
- 4.Matplotlib多子图,文字和注释以及自定义坐标轴
文章目录 Matplotlib绘制多子图,文字和注释以及自定义坐标轴刻度 多子图 自定义子图位置 网格多子图 plt.subplot() / add_subplot方法循环创建 plt.subplot ...
- python使用matplotlib可视化、自定义设置坐标轴的范围、自定义设置主坐标轴刻度和次坐标轴刻度(ticks)、自定义坐标轴刻度的显示样式、自定义坐标轴刻度数值的颜色以及小数点位数
python使用matplotlib可视化.自定义设置坐标轴的范围.自定义设置主坐标轴刻度和次坐标轴刻度(ticks).自定义坐标轴刻度的显示样式.自定义坐标轴刻度数值的颜色以及小数点位数 目录
- MATLAB自定义坐标轴
MATLAB如何自定义坐标轴? 第一步,运行程序后点击查看,属性编辑器, 上图: 第二步,双击X轴或者Y轴, 第三步,点击刻度
最新文章
- 怎样通过WireShark抓到的包分析出SIP流程图
- Django使用中常见的错误
- 遍历 HashMap 的 5 种最佳方式,我不信你全知道!
- Hadoop生态圈以及各组成部分的简介
- 控制台一直报错, [WDS] Disconnected!
- 无线业务需求的线路设计以及拓扑图实现
- javascript-04 引用类型
- 面试基操:MQ怎么保障消息可靠性?
- linux是什么样的_您的Linux设置是什么样的?
- Linux内核分析 - 网络[十二]:UDP模块 - 收发
- 淄博计算机文化基础试卷,我校顺利举办省高校计算机文化基础考试并获佳绩
- 上传文件实时显示网速怎么实现_“双11”来了!三亚1487个5G基站带你拼网速_政务_澎湃新闻...
- 应急管理大数据ppt_大数据应急管理.doc
- 常见必问面试问题一_面试自我介绍3分钟、离职原因、期望薪资…(含面试技巧和答案)
- 3D立体显示大屏幕拼接视频墙系统解决方案【转】
- STP Security之BPDU Filter、BPDU Guard、Root Guard
- Flutter组件学习(13)层叠布局Stack、Positioned
- io密集服务器cpu性能,线程池中CPU密集型和IO密集型选择
- 唯品会php接口,唯品会VIP-开放平台
- buildroot 使用