labels = ['A', 'B', 'C', 'D'] # 分类标签 sizes = [15, 30, 45, 10] # 每个分类的数值 # 饼图 plt.figure(figsize=(6, 6)) # 图片大小 plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) # 绘制饼图 plt.axis('equal') # 设置饼图为正圆形 # 保存图形 plt.savefig('quadratic_function.png',dpi=1000) pix = QPixmap("quadratic_function.png") new_width = self.Market.label.width() print(pix.width()) new_height = int(pix.height() * new_width / pix.width()) scaled_pixmap = pix.scaled(QSize(new_width, new_height), Qt.AspectRatioMode.KeepAspectRatio,Qt.TransformationMode.SmoothTransformation) self.Market.label.setPixmap(scaled_pixmap)显示pix,width()为0
时间: 2024-02-06 18:03:27 浏览: 23
您的代码中使用了保存图片的方法plt.savefig(),保存的图片文件名为'quadratic_function.png',但是在后面获取图片时使用了'Market.label'来设置图片,这个是无法使用的。您需要将'Market.label'改为您需要显示图片的标签控件,例如:
```python
import matplotlib.pyplot as plt
from PyQt5.QtGui import QPixmap, QSize
from PyQt5.QtCore import Qt
# 数据
labels = ['A', 'B', 'C', 'D'] # 分类标签
sizes = [15, 30, 45, 10] # 每个分类的数值
# 饼图
plt.figure(figsize=(6, 6)) # 图片大小
plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) # 绘制饼图
plt.axis('equal') # 设置饼图为正圆形
# 保存图形
plt.savefig('quadratic_function.png', dpi=1000)
# 显示图像
pix = QPixmap("quadratic_function.png")
new_width = your_label.width() # 替换为您需要显示图片的标签控件
new_height = int(pix.height() * new_width / pix.width())
scaled_pixmap = pix.scaled(QSize(new_width, new_height), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)
your_label.setPixmap(scaled_pixmap) # 替换为您需要显示图片的标签控件
```
另外,您的图片保存后可能需要关闭当前绘图窗口,以避免影响后续的绘图操作,可以添加plt.close()语句,如下:
```python
# 保存图形
plt.savefig('quadratic_function.png', dpi=1000)
plt.close()
# 显示图像
pix = QPixmap("quadratic_function.png")
# ...
```