PyQt5+QtChart实现绘制区域图
作者:SongYuLong的博客 发布时间:2021-08-15 01:00:05
标签:PyQt5,QtChart,区域图
PyQt5 QtChart-区域图
QAreaSeries用于创建区域图数据,传入两个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("区域图")
chart = QChart()
chartView = QChartView()
# 创建Series
series0 = QLineSeries()
series1 = QLineSeries()
# 添加数据
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)
# 创建区域图
area = QAreaSeries(series0, series1)
area.setName("面积")
# 设置画笔, pen用于画区域的边框
pen = QPen(Qt.red)
pen.setWidth(3)
area.setPen(pen)
# 设置画刷,brush用于填充区域
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_())
效果图
补充
当然除了上面的方法,小编还为大家准备了另一种可以实现区域图绘制的方法,希望对大家有所帮助
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)
# 设置窗口标题
self.setWindowTitle('实战 Qt for Python: QChart面积图演示')
# 设置窗口大小
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)
#渐变设置
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)
#创建图表
chart = QChart()
chart.addSeries(areaSeries)
chart.setTitle('简单面积图示例')
chart.createDefaultAxes()
chart.axes(Qt.Horizontal)[0].setRange(0, 20) #横坐标数值范围
chart.axes(Qt.Vertical)[0].setRange(0, 10) #纵坐标数值范围
#图表视图
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())
效果图
来源:https://blog.csdn.net/songyulong8888/article/details/12833129
0
投稿
猜你喜欢
- 前言笔者用的是mac开发,但是mac自带的php功能安装十分不方便,并且和线上的linux开发环境不一致。在没有用docker之前一直用va
- 导入所需库%matplotlib inlineimport sympyimport numpy as npimport matplotlib
- 这次主要是爬了京东上一双鞋的相关评论:将数据保存到excel中并可视化展示相应的信息主要的python代码如下:文件1#将excel中的数据
- 从CNNIC在2009年的报告中可以看到,超过80%的网民购物之前都要看评论(包括本站、其他站评论),超过80%的网民都比较信任口碑(包括网
- 如下所示:'''@author: Jacobpc'''import osimport sys
- YOLOv5的Backbone设计在上一篇文章《YOLOV5的anchor设定》中我们讨论了anchor的产生原理和检测过程,对YOLOv5
- 欢迎来到 Python Httpx 教程。在本教程中,我们将深入探讨 Httpx 库,并学习如何使用它来构建高性能的异步网络应用程序。什么是
- 在python中使用socket进行linux服务器与win10主机间的图像传输,供大家参考,具体内容如下前提:服务器与主机需要在同一局域网
- 这篇文章主要介绍了PyQt5 closeEvent关闭事件退出提示框原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的
- 需要画框取消注释rectangleimport cv2import os,sys,shutilimport numpy as np# Ope
- python刷CSDN访问量import requestsimport reimport timepayload = ""
- 数据挖掘查询任务根据 Analysis Services 内置的数据挖掘模型运行预测查询。预测查询通过使用挖掘模型来创建对新数据的预测。例如
- 谈到用户界面交互总少不了事件,前面一系列文章介绍的鼠标光标、坐标、弹出式提示框等实现的底层其实都是事件处理,只不过matplotlib或其他
- 前言删除列表中的元素十分简单,有很多方法。使用最多的是remove方法,remove() 方法从集合中删除指定的元素。此方法与discard
- 箱线图箱线图一般用来展现数据的分布,如上下四分位值、中位数等,也可以直观地展示异常点。Matplotlib提供了boxplot()函数绘制箱
- 基于python的Appium进行b站直播消费记录爬取之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行
- (一)Python 是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制⒈对象的引用计数机制Pyth
- 在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份date_value:=add_mo
- 关于这个话题,我也看到网上有其他方法来解决。 不过从性能和代码量上来看,我有更好的办法。 在这里和大家 分享。 原理其实很简单, 知识1、长
- Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库关于音频, PyAudio 这个库,