想要在空白处 插入一个柱状图 不知道怎么插入
你要是需要画柱状图或者说明折线图或饼图,推荐使用qchatview。这个是饼图
很简单,你看一下
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtChart import (QChart, QChartView, QBarSeries, QBarSet, QBarCategoryAxis, QValueAxis)
from QtCharts import Ui_MainWindow
class Window(QMainWindow, Ui_MainWindow):
def __init__(self, app):
super(QMainWindow, self).__init__()
self.app = app
self.setup_ui() # 渲染画布
def setup_ui(self):
self.setupUi(self) # 调用Ui_MainWindow的setupUi渲染界面
chart = QChart()
self.setting()
self.plot_view.setChart(chart)
chart.addSeries(self.series)
chart.setTitle("参数指标xxx")
axisY = QValueAxis()
axisY.applyNiceNumbers() # 调整Y轴范围,使可用显示所有数据,便于观看
chart.addAxis(axisY, Qt.AlignLeft)
self.series.attachAxis(axisY) # 数据与坐标轴绑定
self.axis_x = QBarCategoryAxis() # 将类别添加到图表的轴
daysofweek = '算法对比'
self.axis_x.append(daysofweek)
chart.addAxis(self.axis_x, Qt.AlignBottom)
self.series.attachAxis(self.axis_x)
def setting(self):
cols = ['算法1', '算法2', '算法3']
data = [53, 24, 85]
self.series = QBarSeries() # 将一系列数据显示为按类别分组的垂直条形图
for i in range(len(cols)):
setTemp = QBarSet(cols[i]) # QBarSet 类表示条形图中的一组条形
temp = data[i] # 柱状图的数值
setTemp.append(temp)
self.series.append(setTemp)
if __name__ == "__main__":
app = QApplication(sys.argv)
mywindow = Window(app)
mywindow.show()
sys.exit(app.exec_())
1.柱状图的代码如下:
```python
import sys
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtChart import (QChartView, QChart, QBarSeries, QBarSet,
QLegend, QBarCategoryAxis, QValueAxis)
class DemoChartBarSeries(QMainWindow):
def __init__(self, parent=None):
super(DemoChartBarSeries, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战 Qt for Python: QChart柱状图演示')
# 设置窗口大小
self.resize(480, 360)
self.createChart()
def createChart(self):
#创建条状单元
barSet0 = QBarSet('Jane')
barSet1 = QBarSet('Jone')
barSet2 = QBarSet('Axel')
barSet3 = QBarSet('Mary')
barSet4 = QBarSet('Samantha')
barSet0.append([1, 2, 3, 4, 5, 6])
barSet1.append([5, 0, 0, 4, 0, 7])
barSet2.append([3, 5, 8, 13, 8, 5])
barSet3.append([5, 6, 7, 3, 4, 5])
barSet4.append([9, 7, 5, 3, 1, 2])
#条状图
barSeries = QBarSeries()
barSeries.append(barSet0)
barSeries.append(barSet1)
barSeries.append(barSet2)
barSeries.append(barSet3)
barSeries.append(barSet4)
#创建图表
chart = QChart()
chart.addSeries(barSeries)
chart.setTitle('简单柱状图示例')
chart.setAnimationOptions(QChart.SeriesAnimations) #设置成动画显示
#设置横向坐标(X轴)
categories = ['一月', '二月', '三月', '四月', '五月', '六月']
axisX = QBarCategoryAxis()
axisX.append(categories)
chart.addAxis(axisX, Qt.AlignBottom)
barSeries.attachAxis(axisX)
#设置纵向坐标(Y轴)
axisY = QValueAxis()
axisY.setRange(0, 15)
chart.addAxis(axisY, Qt.AlignLeft)
barSeries.attachAxis(axisY)
#图例属性
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
#图表视图
chartView = QChartView(chart)
chartView.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartView)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoChartBarSeries()
window.show()
sys.exit(app.exec())
```
2.如果需要在groupbox中显示,则需要
2.1 定义一个layout;
2.2 给layout添加一个widget,即柱状图;
2.3 给groupbox添加layout即可。