pyqt动态生成柱状图
时间: 2023-09-03 16:12:18 浏览: 238
以下是使用PyQt动态生成柱状图的示例代码:
```python
import sys
import random
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtChart import QChart, QChartView, QBarSet, QBarSeries, QBarCategoryAxis
class BarChart(QWidget):
def __init__(self):
super().__init__()
# 设置窗口大小和标题
self.setGeometry(100, 100, 800, 600)
self.setWindowTitle("Dynamic Bar Chart")
# 创建垂直布局和图表视图
layout = QVBoxLayout()
chart_view = QChartView(self)
layout.addWidget(chart_view)
self.setLayout(layout)
# 创建柱状图并设置标题
self.chart = QChart()
self.chart.setTitle("Dynamic Bar Chart")
# 创建柱状集合和类别轴
self.sets = QBarSet("Values")
self.series = QBarSeries()
self.series.append(self.sets)
self.axis = QBarCategoryAxis()
# 将柱状集合添加到柱状图中
self.chart.addSeries(self.series)
# 将类别轴添加到柱状图中
self.chart.createDefaultAxes()
self.chart.setAxisX(self.axis, self.series)
# 设置图表视图
chart_view.setChart(self.chart)
# 定时器用于定期更新柱状图
self.timer = self.startTimer(1000)
def timerEvent(self, event):
# 随机生成柱状图数据
values = [random.randint(0, 100) for i in range(10)]
categories = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
# 更新柱状集合和类别轴
self.sets.clear()
for value in values:
self.sets.append(value)
self.axis.clear()
self.axis.append(categories)
# 更新柱状图
self.chart.removeSeries(self.series)
self.series = QBarSeries()
self.series.append(self.sets)
self.chart.addSeries(self.series)
self.chart.setAxisX(self.axis, self.series)
# 重绘图表视图
self.chartView.repaint()
if __name__ == '__main__':
app = QApplication(sys.argv)
chart = BarChart()
chart.show()
sys.exit(app.exec_())
```
该示例程序创建了一个窗口,并在其中动态生成柱状图。程序使用了PyQt的QChart、QChartView、QBarSet、QBarSeries和QBarCategoryAxis类来创建和显示柱状图。程序还使用了Python的随机模块来生成随机数据,以更新柱状图。程序使用了定时器来定期更新柱状图。
阅读全文