初學者可能都會遇到一個小問題就是:在用ipython的時候,可以使用類似
1
|
% matplotlib inline |
的magic function(魔法函數(shù))來顯示matplotlib圖表,但是用pycharm編寫項目的時候是不能寫magic函數(shù)的,會出現(xiàn)編譯錯誤:
但是不加這行,運行后,matplotlib圖表就不會正常顯示。程序運行后也不會報錯,只會在控制臺輸出:
1
|
process finished with exit code 0 |
后了事。
因此,我們的關注點似乎要移動到magic function身上了,什么是magic函數(shù)呢?
官方給出的定義是:ipython有一組預先定義好的所謂的魔法函數(shù)(magic functions),你可以通過命令行的語法形式來訪問它們。可見“%matplotlib inline”就是模仿命令行來訪問magic函數(shù)的在ipython中獨有的形式。
magic函數(shù)分兩種:一種是面向行的,另一種是面向單元型的。
行magic函數(shù)是用前綴“%”標注的,很像我們在系統(tǒng)中使用命令行時的形式,例如在mac中就是你的用戶名后面跟著“$”。“%”后面就是magic函數(shù)的參數(shù)了,但是它的參數(shù)是沒有被寫在括號或者引號中來傳值的。
單元型magic函數(shù)是由兩個“%%”做前綴的,它的參數(shù)不僅是當前“%%”行后面的內容,也包括了在當前行以下的行。比如:計算代碼執(zhí)行時間的timeit函數(shù),我們可以這樣寫
1
2
3
|
in [ 2 ]: % % timeit x = range ( 10000 ) ...: min (x) 1000 loops, best of 3 : 223 us per loop |
既然是ipython的內置magic函數(shù),那么在pycharm中是不會支持的。但是我們可以在matplotlib中的pyplot身上下功夫,pyplot不會不提供展示圖像的功能。
所以代碼可以這樣寫:
1
2
3
4
5
6
7
8
9
10
|
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函數(shù)包括三種:
1. 伴隨你的代碼使用的函數(shù):%run, %edit, %save, %macro, %recall等;
2. 可以影響到腳本本身的函數(shù):%colors, %xmode, %autoindent, %automagic等;
3. 其他的函數(shù): %reset, %timeit, %%writefile, %load, %paste。
謝謝大家能看到這里。
以上這篇解決matplotlib圖表不能在pycharm中顯示的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/xinluqishi123/article/details/63523531