python draw_不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决

前言

本文主要给大家介绍了关于不同版本中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 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)被调用的时候才会刷新界面。

所以只需要上面的代码修改成如下即可在不同版本之间兼容:

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的版本使用如下代码:

import matplotlib as mpl

print mpl.__version__

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值