Matplotlib: Max OSX系統上pyplot.show()無法顯示圖片問題分析
問題描述
環境配置:系統執行Max OSX 10.14.1版本,Anaconda的Python版本為3.6.5,控制檯使用的iTerm2。
需要用matplotlib繪製披薩尺寸與價格關係圖片,程式碼非常簡單:
import matplotlib
import matplotlib.pyplot as plt
x = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
plt.figure()
plt.title('Pizza price plotted against diameter')
plt.xlabel('Diameter in inches')
plt.ylabel('Price in dollars')
plt.plot(x, y, 'k.')
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.show()
通過執行下面的程式碼,應該可以繪製出下列的關於披薩尺寸與價格的關係圖:
在iTerm2終端上執行該指令碼時,發現上述圖框並沒有繪製出來。
問題排查
經過一番排查後發現,使用matplotlib的get_backend()函式獲取iTerm2終端上使用的backend後端為MacOSX,是否該後端有什麼特殊之處呢?為做對比,將後端更換為TkAgg,相應的模組匯入程式碼修改如下:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
更換後端後,繪圖功能變能正常繪製了。這裡需要提醒一點的是,更換後端的命令必須在匯入pylot模組之前使用方能生效。
macosx後端本身是支援GUI繪製的,導致這個問題的根本原因是什麼呢?作者的習慣是一定要挖到root cause,並給出一個比較make sense的解釋。最終在官網上,找到了https://matplotlib.org/faq/usage_faq.html關於maxosx後端的描述:
從對maxosx後端描述上看,在非互動模式下,現在不能夠阻止show()。這就是根本原因啊。換成了系統自帶的互動模式的終端,發現這個問題並不存在。
相關文章
- 成功解決github無法顯示圖片問題Github
- 關於IE下驗證碼圖片無法正常顯示問題
- IOS下圖片不能顯示問題的解決辦法iOS
- 解決本地筆記匯入部落格中圖片無法顯示的問題筆記
- CAD 有些字型無法顯示的問題
- SDWebImage在iOS12上WebP格式圖片不顯示問題WebiOS
- linux系統lcd顯示jpg格式圖片Linux
- Working with Matplotlib on OSX
- Windows pyinstaller wxPython pyecharts無法正常顯示問題WindowsPythonEcharts
- iOS 深入分析大圖顯示問題iOS
- win10系統mpg無法顯示縮圖解決方法Win10圖解
- 圖片上傳顯示替換
- PicGo無法刪除雲端圖片問題PicGo
- 直接在x86硬體上顯示圖片(無os)
- win10 office圖示無法顯示怎麼辦 w10系統office圖示顯示不出來處理方法Win10
- WIN10網站圖片顯示不了怎麼辦 win10網站圖片無法顯示恢復方法Win10網站
- HTML img 元素無法顯示 base64 圖片的可能原因HTML
- 使用"mews/captcha:~2.0" 驗證碼圖片不顯示問題APT
- matplotlib 顯示中文
- matplotlib畫圖未顯示,以及PyCharm中 %matplotlib inline報錯PyCharminline
- psd圖片不能在網頁上顯示網頁
- wangEditor上傳圖片問題
- 仿釘釘頭像(有頭像顯示圖片拼接,無圖顯示暱稱)
- QML中載入圖片不顯示,路徑出錯問題
- python 出圖中文顯示問題Python
- Android系統耳機圖示顯示Android
- vxe-upload 上傳圖片顯示進度
- django 實現圖片上傳和顯示操作Django
- 修復Arch Linux和Manjaro Linux無法顯示emoji的問題LinuxJAR
- AD9中元件無法顯示的問題解決元件
- win10 無法獲取圖示怎麼解決 win10系統圖示不能正常顯示怎麼辦Win10
- 安卓圖片顯示與網路訪問安卓
- 瀏覽器能正常訪問圖片,但是放到img src下就無法顯示的解決方案瀏覽器
- Win10淘寶網站圖片無法顯示如何解決_Win10淘寶網圖片不顯示的解決步驟Win10網站
- Mac OSX系統homebrew update Fetching failed問題解決方案MacAI
- 呼叫系統檔案管理器選擇圖片,呼叫系統裁剪AIP對圖片處理,顯示裁剪之後的圖片...AI
- 解決matplotlib使用plt.pause動態繪圖視窗無法關閉問題繪圖
- docker無法顯示中文Docker