解決Matplotlib圖表不能在Pycharm中顯示的問題

解決Matplotlib圖表不能在Pycharm中顯示的問題

初學者可能都會遇到一個小問題就是:在用IPython的時候,可以使用類似


%matplotlib inline

的Magic Function(魔法函式)來顯示Matplotlib圖表,但是用Pycharm編寫專案的時候是不能寫magic函式的,會出現編譯錯誤:

但是不加這行,執行後,Matplotlib圖表就不會正常顯示。程式執行後也不會報錯,只會在控制檯輸出:


Process finished with exit code 0

後了事。

因此,我們的關注點似乎要移動到Magic Function身上了,什麼是Magic函式呢?

官方給出的定義是:IPython有一組預先定義好的所謂的魔法函式(Magic Functions),你可以通過命令列的語法形式來訪問它們。可見“%matplotlib inline”就是模仿命令列來訪問magic函式的在IPython中獨有的形式。

magic函式分兩種:一種是面向行的,另一種是面向單元型的。

行magic函式是用字首“%”標註的,很像我們在系統中使用命令列時的形式,例如在Mac中就是你的使用者名稱後面跟著“$”。“%”後面就是magic函式的引數了,但是它的引數是沒有被寫在括號或者引號中來傳值的。

單元型magic函式是由兩個“%%”做字首的,它的引數不僅是當前“%%”行後面的內容,也包括了在當前行以下的行。比如:計算程式碼執行時間的timeit函式,我們可以這樣寫


In [2]: %%timeit x = range(10000)
...: min(x)
1000 loops, best of 3: 223 us per loop

既然是IPython的內建magic函式,那麼在Pycharm中是不會支援的。但是我們可以在matplotlib中的pyplot身上下功夫,pyplot不會不提供展示影象的功能。

所以程式碼可以這樣寫:


import numpy as np
from matplotlib import pyplot as plt
from skimage import data
random_image = np.random.random([500, 500])
print(random_image)
plt.imshow(random_image, cmap='gray')
plt.colorbar()
plt.show()

最後加入了plt.show(),這樣就可以將我們生成的影象顯示出來了。

另外,IPython的內建magic函式包括三種:

1. 伴隨你的程式碼使用的函式:%run, %edit, %save, %macro, %recall等;

2. 可以影響到指令碼本身的函式:%colors, %xmode, %autoindent, %automagic等;

3. 其他的函式: %reset, %timeit, %%writefile, %load, %paste。

謝謝大家能看到這裡。

以上這篇解決Matplotlib圖表不能在Pycharm中顯示的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援指令碼之家。

您可能感興趣的文章:

Python matplotlib繪圖視覺化知識點整理(小結)利用numpy matplotlib繪圖的基本操作教程python使用matplotlib繪製折線圖教程Python Matplotlib庫入門指南