在QtCharts.QDateTimeAxis上设置动态刻度

2024-05-16 12:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Qt5(通过pyside2)绘制一个“金钱/时间”图表应用程序

我可以画出数据,现在我正试图设置轴。 我用QValueAxis设置了y轴,它支持动态刻度,所以我可以说“每10000欧元画一个刻度”

axis_y = QtCharts.QValueAxis()
axis_y.setTickType(QtCharts.QValueAxis.TicksDynamic)
axis_y.setTickAnchor(0.)
axis_y.setTickInterval(10000.)
axis_y.setMinorTickCount(9)
self.addAxis(axis_y, Qt.AlignLeft)

我无法用x轴获得相同的结果。我正在使用QDateTimeAxis,但在我看来,它缺少任何动态设置刻度的方法

我想做到的是:“在每年的1月1日画一个大记号,在每个月初画一个小记号”


Tags: 数据应用程序图表时间绘制动态金钱qt5
1条回答
网友
1楼 · 发布于 2024-05-16 12:22:14

这确实不是正确的方法[0],但作为一种快速且“可实现”的解决方法,您可以将QDateTimeAxis替换为QCategoryAxis,并将各种“类别”填充为(例如)数据可用的年份(+-前后某一年)

axis_x = QtCharts.QCategoryAxis()
axis_x.setLabelsPosition(QtCharts.QCategoryAxis.AxisLabelsPositionOnValue)
for dt in years(data):
    axis_x.append(f'{dt}', ts(dt))
self.addAxis(axis_x, Qt.AlignBottom)
series.attachAxis(axis_x)

其中years产生数据的年份(作为date对象),并且ts提取历元时间戳

[0]据我所知,唯一的“真正”解决方案是抛弃QtCharts,依靠Qwt来绘制图表

相关问题 更多 >