python matplotlib画图特别慢,全部需要画200多个子图,并且后续还会根据查询,筛选出需要的图显示,怎么优化
代码如下
def update_plot2(self):
name_list, name_list2, time_list, data_list, data_list2 = self.readCsv()
if self.state2 == 1:
result = list(range(1, len(data_list2)))
else:
result = self.get_selected2()[1]
row = len(result)
column = 1
width = 100 * row
self.F2.fig.clear() # 清除原始图表
# 画图
for i, result_idx in enumerate(result):
ax = self.F2.fig.add_subplot(row + 1, column, i + 2)
dev_x = time_list
dev_y = data_list2[result_idx - 1]
x_min, x_max = min(dev_x), max(dev_x)
y_min, y_max = min(dev_y), max(dev_y)
ax.set_xlim(x_min, x_max)
ax.set_ylim(y_min - 10, y_max + 10)
ax.plot(dev_x, dev_y)
ax.grid(axis='x', linestyle='--', linewidth=0.5, color='green')
# 设置底部边框样式为虚线,颜色为绿色
ax.spines['bottom'].set_linestyle('--')
ax.spines['bottom'].set_color('green')
# 设置顶部边框样式为虚线,颜色为绿色
ax.spines['top'].set_linestyle('--')
ax.spines['top'].set_color('green')
# 隐藏左侧边框和右侧边框
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)
# 标题
ax.set_title(name_list2[result_idx - 1], loc='left')
# 移除刻度线
ax.set_xticks([])
ax.set_yticks([])
self.F2.fig.subplots_adjust(left=0, bottom=0, right=1, top=1, hspace=0.4)
self.canvas2.resize(30000, width) # 画布大小
self.canvas2.draw() # 重绘图表