matplotlib是一个用于创建出版质量图表的桌面绘图包,主要用于2D方面。因此在用python绘制三维图像时,需要引用from mpl_toolkits.mplot3d import Axes3D。
但是在执行程序的时候发现编码问题出错‘UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-5: ordinal not in range(128)’。这个编码问题之前遇到过(可参加之前这篇博客)
于是我在代码开始处添加了代码
import sys
reload(sys)
sys.setdefaultencoding('utf8')
结果又出现了新的问题:画出的图像一闪而过,经过网上查询资料终于发现问题所在。
原来是因为IDLE作为一个GUI Shell环境,在启动初始化过程中,会设置特定的标准输入、标准输出和标准错误输出,而手动执行了reload(sys)以后,sys模块的这三个变量将会被重置,导致输出无法显示在IDLE。
因此解决办法就是在执行‘reload(sys)‘之前,先把三个模块保留起来,然后在设置完编码后重新设置,代码如下:
import sys
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.setdefaultencoding('utf8')
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
至此,就完全解决问题了。