在圖表制作中,有些情況需要将不同類型數據序列顯示一個圖表中,以顯示對比效果,但是兩者的數據所對應的坐标軸是不一樣的,在這種情況線需要使用多坐标軸。
使用多坐标軸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圖表之對數坐标軸
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!