前言
本文主要給大家介紹了關于不同版本中Python matplotlib.pyplot.draw()界面繪制異常的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
在 Ubuntu系統上進行如下配置:
$ sudo apt-get update$ sudo apt-get upgrade$ sudo apt-get install python-dev$ sudo apt-get install python-pip$ sudo pip install --upgrade pip$ sudo pip install --upgrade urllib3$ sudo pip install numpy$ sudo pip install matplotlib
之后執行如下測試代碼:
import sysimport numpy as npimport matplotlib.pyplot as plt plt.ion()(fig, axis) = plt.subplots()bar_plot = axis.barh(0, 8,linewidth = 0)bar_plot.color= '#ffff00'for i in range(20): axis.set_xlim(xmax = max(i + 1, 10)) plt.draw() if sys.version_info < (3, 0): raw_input("Press Enter to continue...")else: input("Press Enter to continue...")上面的測試代碼在 Ubuntu 14.04.5版本上是可以正常執行的,對應的 matplotlib的版本是 matplotlib 1.3.1,但是放到 Ubuntu 16.04.2系統上則是無法正常顯示的,對應的 matplotlib的版本是 matplotlib 1.5.1。
造成這個問題的原因在于 matplotlib.pyplot.draw() ,這個函數行為的改變,早期這個函數是同步更新界面的,后來的版本卻變成了空閑異步更新界面,只有當 matplotlib.pyplot.pause(interval)被調用的時候才會刷新界面。
所以只需要上面的代碼修改成如下即可在不同版本之間兼容:
import sysimport numpy as npimport matplotlib.pyplot as plt plt.ion()(fig, axis) = plt.subplots()bar_plot = axis.barh(0, 8,linewidth = 0)bar_plot.color= '#ffff00'for i in range(20): axis.set_xlim(xmax = max(i + 1, 10)) plt.draw() plt.pause(0.00001) if sys.version_info < (3, 0): raw_input("Press Enter to continue...")else: input("Press Enter to continue...")注意:我們在 matplotlib.pyplot.draw()調用后面增加了 matplotlib.pyplot.pause(interval)的調用。
查看 matplotlib的版本使用如下代碼:
import matplotlib as mplprint mpl.__version__
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。
參考鏈接
real-time plotting in while loop with matplotlib matplotlib Troubleshooting How to know the version of installed pylab?新聞熱點
疑難解答