加速在matplotlib中绘制图像
加速在matplotlib中绘制图像
我在Spyder IDE中编写了一些Python代码,以便将一对图像并排绘制出来,以便我可以进行目视检查。大部分时间我只需要3秒钟来查看它们,但偶尔我需要更长的时间进行仔细观察。因此,我没有使用time.sleep,而是编写了以下代码,让它在我按下回车键后等待:
import matplotlib.pyplot as plt import os def VI_segmentation(): root = os.getcwd() NR_dir = root + '\\Neurite_Results\\' SO_dir = root + '\\Segmentation_Overlays\\' jpgs = os.listdir(NR_dir) fig = plt.figure(figsize=(20,12)) for jpg in jpgs: fig.suptitle(jpg , fontsize=14, fontweight='bold') image_NR = plt.imread(NR_dir + jpg) image_SO = plt.imread(SO_dir + jpg) plt.subplot(121) plt.imshow(image_NR) plt.subplot(122) plt.imshow(image_SO) plt.draw() plt.pause(0.01) input('按回车键继续') VI_segmentation()
问题是,我思考的速度比我的计算机快:). 计算机需要5或6秒钟才能对回车键做出响应,并且在响应后还需要几秒钟进行更新。当处理大量基本上都没问题的图像时,这样的人机工程学效果很差。如果有任何简化这段代码的想法,将不胜感激。
问题的出现原因:问题是由于每次更新绘图时重新绘制而导致的绘图速度变慢。
解决方法:改变绘图中的数据而不是重新绘制,可以解决绘图速度变慢的问题。需要改变的代码如下所示:
im1.set_data(image_NR) im2.set_data(image_SO) f.canvas.draw()
文章整理如下:
这个问题的解决方法如下所示:
import matplotlib.pyplot as plt import os def VI_segmentation(): plt.ion() root = os.getcwd() NR_dir = root + '\\Neurite_Results\\' SO_dir = root + '\\Segmentation_Overlays\\' jpgs = os.listdir(NR_dir) f = plt.figure(figsize=(22,12)) ax1 = f.add_subplot(121) ax2 = f.add_subplot(122) image_NR = plt.imread(NR_dir + jpgs[0]) image_SO = plt.imread(SO_dir + jpgs[0]) im1 = ax1.imshow(image_NR) im2 = ax2.imshow(image_SO) f.suptitle(jpgs[0] , fontsize=14, fontweight='bold') f.show() plt.pause(0.01) input('Press Enter to continue') for jpg in jpgs[1:]: f.suptitle(jpg , fontsize=14, fontweight='bold') image_NR = plt.imread(NR_dir + jpg) image_SO = plt.imread(SO_dir + jpg) im1.set_data(image_NR) im2.set_data(image_SO) f.canvas.draw() plt.pause(0.01) input('Press Enter to continue') VI_segmentation()
原文链接:Why does my pylab animation slow down with each update?
奇怪的是,当我开始改变绘图数据而不是重新绘制时,我开始遇到了一些奇怪的问题,即图形会变大,但周围的窗口大小不变。为了解决这个问题,我重新调整了创建图形和轴的顺序,这样在创建图形时就可以设置图形的大小。
问题:如何加快在matplotlib中绘制图像的速度?
原因:绘制大量图像时,matplotlib的默认后端可能会导致绘图速度较慢。
解决方法:更改matplotlib的后端以提高绘图速度。
解决方法一:尝试使用GTKAgg后端,步骤如下:
1. 在matplotlib的导入语句后,添加以下代码:
import matplotlib matplotlib.use('GTKAgg')
2. 运行程序,查看绘图速度是否有所改善。
解决方法二:尝试其他可用的后端,步骤如下:
1. 参考链接http://matplotlib.org/faq/usage_faq.html#what-is-a-backend,了解可用的后端。
2. 根据需求,尝试使用其他后端,查看绘图速度是否有所改善。
通过更改matplotlib的后端,可以加快在matplotlib中绘制图像的速度。可以尝试使用GTKAgg后端或其他可用的后端,找到最适合的后端来提高绘图速度。