2015-11-09 159 views
1

我在Spyder IDE中編寫了一些Python來並排繪製一對圖像,以便我可以直觀地檢查它們。我大部分時間只需要3秒就可以看到它們,但每隔一段時間我需要更長的時間仔細觀察。因此,我沒有使用time.sleep,而不是我的編碼它等待我打回車鍵如下:加速在matplotlib中繪製圖像

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('Press Enter to continue') 

VI_segmentation() 

的問題是,我想比我的電腦:)更快。計算機響應Enter鍵需要5或6秒鐘,響應後需要幾秒鐘才能更新。在成百上千的大多數圖像中啓動時,會導致糟糕的人體工程學設計。任何想法簡化這個代碼將不勝感激。

+1

由於沒有人擁有這些圖像,所以您需要提供更多信息。至少什麼工程在你的機器上運行緩慢,閱讀關於分析:http://stackoverflow.com/questions/5478351/python-time-measure-function – fghj

回答

5

這個代碼的版本最終解決我的問題:

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?

奇怪的是,當我開始改變打印數據,而不是型重構,我開始變得怪異行爲,其中數字將擴大,但周圍的窗口不會。不知何故,這個fig.set_size_inches被破壞了,所以我圍繞圖形創建和座標軸創建進行了移動,以便在設置圖形時設置圖形大小。