PyQt5+QtChart實(shí)現(xiàn)繪制區(qū)域圖
PyQt5 QtChart-區(qū)域圖
QAreaSeries用于創(chuàng)建區(qū)域圖數(shù)據(jù),傳入兩個QLineSeries對象。核心代碼:
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è)置畫筆, pen用于畫區(qū)域的邊框
pen = QPen(Qt.red)
pen.setWidth(3)
area.setPen(pen)
# 設(shè)置畫刷,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ū)域圖繪制的方法,希望對大家有所幫助
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)
#漸變設(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('簡單面積圖示例')
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python frozenset集合的實(shí)現(xiàn)
frozenset是Python中的不可變集合類型,本文主要介紹了Python frozenset集合的實(shí)現(xiàn), 文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
Python制作數(shù)據(jù)導(dǎo)入導(dǎo)出工具
正好最近在學(xué)習(xí)python,于是打算用python實(shí)現(xiàn)了數(shù)據(jù)導(dǎo)入導(dǎo)出工具,由于是新手,所以寫的有些不完善的地方還請見諒2015-07-07
Python自動化操作Excel方法詳解(xlrd,xlwt)
Excel是Windows環(huán)境下流行的、強(qiáng)大的電子表格應(yīng)用。本文將詳解用Python利用xlrd和xlwt實(shí)現(xiàn)自動化操作Excel的方法詳細(xì),需要的可以參考一下2022-06-06
Sklearn調(diào)優(yōu)之網(wǎng)格搜索與隨機(jī)搜索原理詳細(xì)分析
這篇文章主要介紹了Sklearn調(diào)優(yōu)之網(wǎng)格搜索與隨機(jī)搜索原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02
一文詳解Python中實(shí)現(xiàn)單例模式的幾種常見方式
這篇文章主要為大家介紹了Python中實(shí)現(xiàn)單例模式的幾種常見方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
一文詳解Python中的Map,Filter和Reduce函數(shù)
這篇文章主要介紹了一文詳解Python中的Map,Filter和Reduce函數(shù),本文重點(diǎn)介紹Python中的三個特殊函數(shù)Map,Filter和Reduce,以及如何使用它們進(jìn)行代碼編程2022-08-08

