这个类其实是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自定义坐标轴相关推荐

  1. R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度、增加坐标轴刻度的粒度、更加精细地表达

    R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度.增加坐标轴刻度的粒度.更加精细地表达 目录

  2. plotly可视化绘制多子图(subplots)并自定义坐标轴

    plotly可视化绘制多子图(subplots)并自定义坐标轴 # 多子图并自定义坐标轴 from plotly import tools import plotly as py import plo ...

  3. 【转】Unity Scene场景自定义坐标轴

    [转]Unity Scene场景自定义坐标轴 来自:https://blog.csdn.net/cheng624/article/details/70859054 多看看别人的代码是没有坏处的,即使学 ...

  4. echarts 柱状图不显示y坐标轴_Python+matplotlib自定义坐标轴位置、颜色、箭头

    图书推荐: <Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等 ...

  5. Python+matplotlib自定义坐标轴位置、颜色、箭头

    容易的事.例如下面的代码: 绘制结果为: 虽然确实几行代码就画出了正弦曲线,但是这个图也太朴素了,如果我们想得到下面这样的结果,该如何实现呢? 上面图形中的难点在于坐标轴的箭头,可以使用axisart ...

  6. Python-Matplotlib可视化(6)——自定义坐标轴让统计图清晰易懂

    Python-Matplotlib可视化(6)--自定义坐标轴让统计图清晰易懂 前言 控制刻度间距 控制刻度标签 更简单的设置方式 高级刻度标签控制 使用对数刻度 使用极坐标 系列链接 前言 在系列博 ...

  7. 4.Matplotlib多子图,文字和注释以及自定义坐标轴

    文章目录 Matplotlib绘制多子图,文字和注释以及自定义坐标轴刻度 多子图 自定义子图位置 网格多子图 plt.subplot() / add_subplot方法循环创建 plt.subplot ...

  8. python使用matplotlib可视化、自定义设置坐标轴的范围、自定义设置主坐标轴刻度和次坐标轴刻度(ticks)、自定义坐标轴刻度的显示样式、自定义坐标轴刻度数值的颜色以及小数点位数

    python使用matplotlib可视化.自定义设置坐标轴的范围.自定义设置主坐标轴刻度和次坐标轴刻度(ticks).自定义坐标轴刻度的显示样式.自定义坐标轴刻度数值的颜色以及小数点位数 目录

  9. MATLAB自定义坐标轴

    MATLAB如何自定义坐标轴? 第一步,运行程序后点击查看,属性编辑器, 上图: 第二步,双击X轴或者Y轴, 第三步,点击刻度

最新文章

  1. 怎样通过WireShark抓到的包分析出SIP流程图
  2. Django使用中常见的错误
  3. 遍历 HashMap 的 5 种最佳方式,我不信你全知道!
  4. Hadoop生态圈以及各组成部分的简介
  5. 控制台一直报错, [WDS] Disconnected!
  6. 无线业务需求的线路设计以及拓扑图实现
  7. javascript-04 引用类型
  8. 面试基操:MQ怎么保障消息可靠性?
  9. linux是什么样的_您的Linux设置是什么样的?
  10. Linux内核分析 - 网络[十二]:UDP模块 - 收发
  11. 淄博计算机文化基础试卷,我校顺利举办省高校计算机文化基础考试并获佳绩
  12. 上传文件实时显示网速怎么实现_“双11”来了!三亚1487个5G基站带你拼网速_政务_澎湃新闻...
  13. 应急管理大数据ppt_大数据应急管理.doc
  14. 常见必问面试问题一_面试自我介绍3分钟、离职原因、期望薪资…(含面试技巧和答案)
  15. 3D立体显示大屏幕拼接视频墙系统解决方案【转】
  16. STP Security之BPDU Filter、BPDU Guard、Root Guard
  17. Flutter组件学习(13)层叠布局Stack、Positioned
  18. io密集服务器cpu性能,线程池中CPU密集型和IO密集型选择
  19. 唯品会php接口,唯品会VIP-开放平台
  20. buildroot 使用

热门文章

  1. vue.js + element中el-select实现拼音匹配,分词、缩写、多音字匹配能力
  2. react父子组件传值
  3. node[13]-回调
  4. 技术宅找女朋友的技术分析 1
  5. C#之特性(Attribute)
  6. Simulink模型颜色快速设置
  7. 关于Excel“文件格式和扩展名不匹配。文件可能已损坏或不安全”的解决方法
  8. 对比其它设计工具,Figma都有哪些优点和缺点
  9. 【 PHP 】项目使用 libsodium 扩展
  10. 应急响应windows+linux