如何在 python 中的 x qwtplot 轴上放置日期?
Posted
技术标签:
【中文标题】如何在 python 中的 x qwtplot 轴上放置日期?【英文标题】:How to put dates on the x qwtplot axis in python? 【发布时间】:2016-09-23 18:36:58 【问题描述】:我访问了互联网上的大量页面,但只有 C 语言的示例,我不明白如何在 python 中制作它。有人能帮我吗。 我使用 Pyqt 设计器和 Python 2.7。我需要使用 qwtplot 在 GUI 上绘制日期数据。
【问题讨论】:
【参考方案1】:你需要一个 QwtScaleDraw 类,例如:
class TimeScaleDraw(QwtScaleDraw):
def __init__(self, baseTime, *args):
QwtScaleDraw.__init__(self, *args)
self.baseTime = baseTime
def label(self, value):
upTime = self.baseTime.addSecs(int(value))
return QwtText(upTime.toString())
然后你用这个代码修改你的 x 轴:
self.setAxisScaleDraw(
QwtPlot.xBottom, TimeScaleDraw(self.cpuStat.upTime()))
self 的基类是 QwtPlot。 cpuStat.upTime() 返回一个 QTime 实例。 value 代表您的时间数据点之一。此代码来自 cpuDemo 示例代码。
要获得此示例 cpuDemo 使用 python xy 2.7。对导入的模块进行以下更改:
import os
import sys
import numpy as np
from PyQt4.QtGui import (QApplication, QColor, QBrush, QWidget, QVBoxLayout,
QLabel)
from PyQt4.QtCore import QRect, QTime
from PyQt4.QtCore import Qt
from PyQt4.Qwt5 import (QwtPlot, QwtPlotMarker, QwtScaleDraw, QwtLegend, QwtPlotCurve,
QwtPlotItem, QwtText)#, QwtLegendData
然后注释掉所有的图例行。
我采用此代码来使用 QDateTime 类。这是一个sn-p:
from PyQt4 import QtCore, QtGui, Qt
from PyQt4 import Qwt5
class TimeScaleDraw(Qwt5.QwtScaleDraw):
def __init__(self, *args):
Qwt5.QwtScaleDraw.__init__(self,unixBaseTime *args)
self.basetime=unixBaseTime
self.fmt='h:mm\nd-MMM-yyyy'
def label(self, value):
dt = QtCore.QDateTime.fromMSecsSinceEpoch((value+self.basetime))
return Qwt5.QwtText(dt.toString(self.fmt))
...
class Ui_TabWidget(object):
def setupUi(self, TabWidget):
self.qwtPlot = Qwt5.QwtPlot()
self.qwtPlot.setAxisScaleDraw(Qwt5.QwtPlot.xBottom, TimeScaleDraw(unixBaseTime))
欣赏美丽的画面
【讨论】:
以上是关于如何在 python 中的 x qwtplot 轴上放置日期?的主要内容,如果未能解决你的问题,请参考以下文章