在图表制作中,有些情况需要将不同类型数据序列显示一个图表中,以显示对比效果,但是两者的数据所对应的坐标轴是不一样的,在这种情况线需要使用多坐标轴。
使用多坐标轴QChart中图表序列,通常需要绑定两个坐标轴(水平X轴,垂直Y轴),对X轴和Y轴的绑定是分离的,这样为多坐标轴的使用提供极大的灵活性,最常见的应用是,两组图表序列数据共用一个坐标轴(比如X轴),另一个坐标做则是各种独立的,一个坐标轴的刻度的信息显示在左边,另一个坐标轴的刻度和信息显示在右边。
多坐标轴示例示例显示了如何创建具有两个垂直轴的简单图表,完整代码如下:
importsys
from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QMainwindow, QMessageBox
from PyQt5.QtChart import QChart, QChartView, QSplineSeries, QCategoryAxis, QValueAxis
class DemoMultipleAxes(QMainWindow):
def __init__(self, parent=None):
super(DemoMultipleAxes, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战 Qt for Python: 多坐标轴演示')
# 设置窗口大小
self.resize(480, 360)
self.createChart()
def createChart(self):
#创建图表
chart = QChart()
chart.legend().hide()
chart.setTitle('多坐标轴图表示例')
#添加x坐标轴
axisX = QValueAxis()
axisX.setTickCount(10)
chart.addAxis(axisX, Qt.AlignBottom)
#添加样条线1
series = QSplineSeries()
series << QPointF(1, 5) << QPointF(3.5, 18) << QPointF(4.8, 7.5) << QPointF(10, 2.5)
chart.addSeries(series)
#添加左边y轴
axisY = QValueAxis()
axisY.setLinePenColor(series.pen().color())
chart.addAxis(axisY, Qt.AlignLeft)
series.attachAxis(axisX)
series.attachAxis(axisY)
#添加样条线2
series = QSplineSeries()
series.append(QPointF(1, 0.5))
series.append(QPointF(1.5, 4.5))
series.append(QPointF(2.4, 2.5))
series.append(QPointF(4.3, 12.5))
series.append(QPointF(5.2, 3.5))
series.append(QPointF(7.4, 16.5))
series.append(QPointF(8.3, 7.5))
series.append(QPointF(10, 17))
chart.addSeries(series)
#添加右边Y轴
axisY2 = QCategoryAxis()
axisY2.append('低', 5)
axisY2.append('中', 12)
axisY2.append('高', 17)
axisY2.setLinePenColor(series.pen().color())
axisY2.setGridLinePen(series.pen())
chart.addAxis(axisY2, Qt.AlignRight)
series.attachAxis(axisX)
series.attachAxis(axisY2)
#图表视图
chartView = QChartView(chart)
chartView.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartView)
if__name__=='__main__':
app=QApplication(sys.argv)
window=DemoMultipleAxes()
window.show()
sys.exit(app.exec())
运行结果如下图:
QChart多坐标轴示例
本文知识点- 如何实现多坐标轴显示
请多多关注,评论,收藏,点赞,和转发。
前一篇: 实战PyQt5: 153-QChart图表之对数坐标轴
,