Apu. 2023-11-01 22:12 采纳率: 100%
浏览 43
已结题

python matplotlib画图特别慢,怎么优化?

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()  # 重绘图表

  • 写回答

2条回答 默认 最新

  • cjh4312 2023-11-01 22:20
    关注

    用pyqtgraph

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 修改了问题 11月1日
  • 创建了问题 11月1日