PyQt5+QtChart實(shí)現(xiàn)繪制區(qū)域圖
PyQt5 QtChart-區(qū)域圖
QAreaSeries用于創(chuàng)建區(qū)域圖數(shù)據(jù),傳入兩個(gè)QLineSeries對(duì)象。核心代碼:
series0 = QLineSeries() series1 = QLineSeries() area = QAreaSeries(series0, series1)
示例代碼
import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt from PyQt5.QtChart import QAreaSeries, QLineSeries, QSplineSeries, QValueAxis, QChart, QChartView class MyAreaWindow(QWidget): def __init__(self, parent=None): super(MyAreaWindow, self).__init__(parent) self.setWindowTitle("區(qū)域圖") chart = QChart() chartView = QChartView() # 創(chuàng)建Series series0 = QLineSeries() series1 = QLineSeries() # 添加數(shù)據(jù) series0 << QPointF(1, 5) << QPointF(3, 7) << QPointF(7, 6) << QPointF(9, 7) \ << QPointF(12, 6) << QPointF(16, 7) << QPointF(18, 5) series1 << QPointF(1, 3) << QPointF(3, 4) << QPointF(7, 3) << QPointF(8, 2) \ << QPointF(12, 3) << QPointF(16, 4) << QPointF(18, 3) # 創(chuàng)建區(qū)域圖 area = QAreaSeries(series0, series1) area.setName("面積") # 設(shè)置畫(huà)筆, pen用于畫(huà)區(qū)域的邊框 pen = QPen(Qt.red) pen.setWidth(3) area.setPen(pen) # 設(shè)置畫(huà)刷,brush用于填充區(qū)域 brush = QBrush(Qt.yellow) area.setBrush(brush) # gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1)) # gradient.setColorAt(0.0, QColor(0x3cc63c)) # gradient.setColorAt(1.0, QColor(0x16f626)) # gradient.setCoordinateMode(QGradient.ObjectBoundingMode) # area.setBrush(gradient) chart.addSeries(area) chart.createDefaultAxes() chart.axisX().setRange(0, 20) chart.axisY().setRange(0, 10) chartView.setChart(chart) chartView.setRenderHint(QPainter.Antialiasing) vbox = QVBoxLayout() vbox.addWidget(chartView) self.setLayout(vbox) if __name__ == "__main__": app = QApplication(sys.argv) win = MyAreaWindow() win.show() sys.exit(app.exec_())
效果圖
補(bǔ)充
當(dāng)然除了上面的方法,小編還為大家準(zhǔn)備了另一種可以實(shí)現(xiàn)區(qū)域圖繪制的方法,希望對(duì)大家有所幫助
import sys from PyQt5.QtCore import Qt, QPointF from PyQt5.QtGui import QPainter, QPen, QLinearGradient, QColor from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtChart import QChartView, QChart, QLineSeries, QAreaSeries class DemoChartArea(QMainWindow): def __init__(self, parent=None): super(DemoChartArea, self).__init__(parent) # 設(shè)置窗口標(biāo)題 self.setWindowTitle('實(shí)戰(zhàn) Qt for Python: QChart面積圖演示') # 設(shè)置窗口大小 self.resize(480, 360) self.createChart() def createChart(self): #面積圖的上下兩條曲線 #注意line0和line1的生存周期!!!!! self.line0 = QLineSeries() self.line1 = QLineSeries() self.line0 << QPointF(1, 5) << QPointF(3, 7) << QPointF(7, 6) << QPointF(9, 7) << QPointF(12, 6) << QPointF(16, 7) << QPointF(18, 5) self.line1 << QPointF(1, 3) << QPointF(3, 4) << QPointF(7, 3) << QPointF(8, 2) << QPointF(12, 3) << QPointF(16, 4) << QPointF(18, 3) #面積圖 areaSeries = QAreaSeries(self.line0, self.line1) areaSeries.setName('蝙蝠俠') #Batman pen = QPen(QColor(0x059605)) pen.setWidth(3) areaSeries.setPen(pen) #漸變?cè)O(shè)置 gradient = QLinearGradient(QPointF(0,0), QPointF(0, 1)) gradient.setColorAt(0.0, QColor(0x3cc63c)) gradient.setColorAt(1.0, QColor(0x26f626)) gradient.setCoordinateMode(QLinearGradient.ObjectBoundingMode) areaSeries.setBrush(gradient) #創(chuàng)建圖表 chart = QChart() chart.addSeries(areaSeries) chart.setTitle('簡(jiǎn)單面積圖示例') chart.createDefaultAxes() chart.axes(Qt.Horizontal)[0].setRange(0, 20) #橫坐標(biāo)數(shù)值范圍 chart.axes(Qt.Vertical)[0].setRange(0, 10) #縱坐標(biāo)數(shù)值范圍 #圖表視圖 chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(chartView) if __name__ == '__main__': app = QApplication(sys.argv) window = DemoChartArea() window.show() sys.exit(app.exec())
效果圖
到此這篇關(guān)于PyQt5+QtChart實(shí)現(xiàn)繪制區(qū)域圖的文章就介紹到這了,更多相關(guān)PyQt5 QtChart區(qū)域圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django為Form生成的label標(biāo)簽添加class方式
這篇文章主要介紹了django為Form生成的label標(biāo)簽添加class方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python讀寫(xiě)刪除復(fù)制文件操作方法詳細(xì)實(shí)例總結(jié)
這篇文章主要介紹了python讀寫(xiě)刪除復(fù)制文件操作方法詳細(xì)實(shí)例總結(jié),需要的朋友可以參考下2021-04-04python通過(guò)第三方庫(kù)操作PDF文件的幾種常見(jiàn)方法
Python是一種高級(jí)編程語(yǔ)言,主要用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、圖像處理等領(lǐng)域,在PDF文件處理方面,Python有許多強(qiáng)大的庫(kù)和工具,這篇文章主要給大家介紹了關(guān)于python通過(guò)第三方庫(kù)操作PDF文件的幾種常見(jiàn)方法,需要的朋友可以參考下2024-02-02Selenium(Python web測(cè)試工具)基本用法詳解
這篇文章主要介紹了Selenium(Python web測(cè)試工具)基本用法,結(jié)合實(shí)例形式分析了Selenium的基本安裝、簡(jiǎn)單使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-08-08Python設(shè)計(jì)密碼強(qiáng)度校驗(yàn)程序
這篇文章主要介紹了Python如何設(shè)計(jì)密碼強(qiáng)度校驗(yàn)程序,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07解決90%的常見(jiàn)問(wèn)題的8個(gè)python NumPy函數(shù)
這篇文章主要為大家介紹了解決90%的常見(jiàn)問(wèn)題的8個(gè)python NumPy函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06對(duì)numpy中二進(jìn)制格式的數(shù)據(jù)存儲(chǔ)與讀取方法詳解
今天小編就為大家分享一篇對(duì)numpy中二進(jìn)制格式的數(shù)據(jù)存儲(chǔ)與讀取方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11保姆級(jí)python教程寫(xiě)個(gè)貪吃蛇大冒險(xiǎn)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)雙人模式的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09利用Python編寫(xiě)一個(gè)自動(dòng)化部署工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python編寫(xiě)一個(gè)自動(dòng)化部署工具,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以了解一下2023-07-07