使用pixmap = QPixmap('%s.png' % name_png) self.label.setPixmap(pixmap)显示plot生成的图片,窗口中的图片会重叠,怎么优化
时间: 2024-03-06 13:50:47 浏览: 173
这个问题可能是因为每次调用 `setPixmap()` 方法时,都会在 QLabel 控件上添加一张新的图片,导致图片重叠。解决这个问题的方法是在每次设置新的图片之前,先清除掉 QLabel 控件上原有的图片。
可以通过在设置新的图片之前,调用 `clear()` 方法来清除掉 QLabel 上的原有图片,例如:
```
self.label.clear() # 清除原有图片
pixmap = QPixmap('%s.png' % name_png)
self.label.setPixmap(pixmap)
```
这样就可以在每次设置新的图片时,先清除原有的图片,再显示新的图片,避免重叠问题。
相关问题
select_sqli ="SELECT time,SUM(CASE WHEN type_c='两厢车' THEN xiaoliang ELSE 0 END)/SUM(xiaoliang) AS ratio,1 - SUM(CASE WHEN type_c='两厢车' THEN xiaoliang ELSE 0 END)/SUM(xiaoliang) AS ratio_complement FROM sheji.sale GROUP BY time;" cur.execute(select_sqli) data = pd.DataFrame(cur.fetchall(), columns=['time', 'portion','r_portion']) data.set_index('time') data = data.sort_index() data = data.iloc[:5, :] plt.figure(figsize=(9.42,1)) data.plot(kind='bar', stacked=True) # 设置标题和标签 plt.title('Sales Ratio of Different Categories') plt.xlabel('Category') plt.ylabel('Ratio') plt.xticks(rotation=90) # 显示图形 plt.savefig('portion.png',dpi=300) pix = QPixmap("portion.png") new_width = self.Market.label_4.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_4.setPixmap(scaled_pixmap) plt.close()为什么横轴变成0,1,2,3,4了,应该为日期
根据你提供的代码,应该是因为没有正确设置横轴的标签。可以尝试在`data.plot()`函数中添加参数 `x='time'` 来指定横轴,例如 `data.plot(kind='bar', stacked=True, x='time')`。另外,你也可以尝试在绘制图形之前添加一行代码 `data = data.set_index('time')` 来将时间列设为索引,然后再进行绘图。这样应该就能正确显示横轴的日期了。
# convert dataframe to string table_string = df.to_string(index=False) fig, ax = plt.subplots(figsize=(8, 6)) plt.title('时域分析结果') # hide axes and add table string to plot ax.axis('off') ax.text(0.35, 0.7, table_string, va='top', bbox={'facecolor': 'white', 'alpha': 1, 'edgecolor': 'black'}) # save plot as png plt.savefig('table1.png') pixmap2 = QPixmap("table1.png") self.figure_label2.setPixmap(pixmap2) elif self.analysis_combo.currentText() == "频域分析": data = np.loadtxt(data_file)[:, 1] signal = np.array(data) # 采样频率什么意思
这段代码是一个条件语句,根据`self.analysis_combo`控件当前选择的文本来执行不同的代码块。
如果选择的是“时域分析”,则会将一个DataFrame类型的数据转换成字符串,并将其存储在`table_string`变量中。然后,它创建了一个8x6英寸大小的图形对象,并将其存储在`fig`和`ax`变量中。接下来,它设置了绘图的标题为“时域分析结果”。然后,它隐藏了图形对象的坐标轴,将表格字符串添加到图形对象的指定位置,使用指定的边框样式和颜色来包围表格字符串,并将绘图保存为PNG格式的图像文件。最后,它将图像文件加载到`self.figure_label2`标签中,以在GUI应用程序中显示图像。
如果选择的是“频域分析”,则会从`data_file`中加载数据,并将其第二列存储到`data`数组中。然后,它将`data`数组转换为NumPy数组并存储到`signal`变量中。在信号处理中,“采样频率”通常是指信号在时间上采样的频率,即每秒采样的次数。但是,在这段代码中没有给出“采样频率”的具体含义或用途,可能需要根据具体的上下文来理解。
阅读全文