前言
本文主要给大家介绍了关于不同版本中Python matplotlib.pyplot.draw()界面绘制异常的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
在 Ubuntu系统上进行如下配置:
1
2
3
4
5
6
7
8
|
$ 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
|
之后执行如下测试代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import sys
import numpy as np
import 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)
被调用的时候才会刷新界面。
所以只需要上面的代码修改成如下即可在不同版本之间兼容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import sys
import numpy as np
import 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的版本使用如下代码:
1
2
|
import matplotlib as mpl
print mpl.__version__
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
参考链接
- real-time plotting in while loop with matplotlib
- matplotlib Troubleshooting
- How to know the version of installed pylab?
原文链接:http://www.mobibrw.com/2017/8476