windows下Python图形化工具Matplotlib安装
本人最近打算用科学运算生成的数据来进行可视化展示,无奈java的图形化接口太稀缺,Matlab太过庞大,不想多折腾。刚好最近用Python在做数值运算,看了一些网上说的工具,最后决定采用和Matlab“走的最近”的Matplotlib进行图形展示,自己摸索了半天也成功了,顺便给大家分享一下自己的经验。
Matplotlib属于Python的一类科学计算包的扩展,就类似java中第三方jar包。为了保持版本的稳定(听说Python3.X在后续的安装上会有兼容性问题),这里采用Python2.7.11。小伙伴们可以在官网下载,下载地址如下:
https://www.python.org/downloads/release/python-2711/ ,进入后选择windows版本即可,位数根据自己的系统而定,我这里是win10 64位的,所以下载Windows x86-64 MSI installer。安装方法很简单,选择安装路径后下一步即可,完成后记得在系统中配置环境变量(如:path=%path%;D:\python\python-2.7.11)。
-
接下来进入主题,先给出Matplotlib官网链接:http://matplotlib.org/users/installing.html
很重要的一点,版本号尽量和Python相对应。从官网的说明来看,安装Matplotlib还需要安装numpy, setuptools, python-dateutil, pytz, pyparsing, and cycler这些外置包。我当时一看,也被它唬住了,但尝试后发现其实安装方法大多相同。
-
下面咱们先安装numpy。官网上给出的版本几乎都是解压版的,我也曾尝试通过pip命令进行安装,但无奈底层各种不兼容,一编译就出错,多方尝试后也没有很好的解决办法。后来看过大神的帖子后建议windows下还是通过.exe安装来的稳妥,测试了许久,找到一个Python2.7能用的版本,链接如下:
http://download.csdn.net/download/z1137730824/8384347(numpy 64位)
http://download.csdn.net/detail/u010156024/9302649(numpy 32位)
下载后为numpy-MKL-1.8.0.win-amd64-py2.7.exe,双击可进入安装界面,点击下一步发现安装是灰色的,找不到相应的Python。这里很奇怪,Python安装时并没有往注册表里进行注册,所以numpy搜索不到,因此我们需要手动注册,这里提供一个简单的办法,将下面的程序复制另存为:register.py
# script to register Python 2.0 or later for use with win32all
# and other extensions that require Python registry settings
#
# written by Joakim Loew for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm
#
# modified by Valentine Gogichashvili as described in http://www.mail-archive.com/distutils-sig@python.org/msg10512.html
import sys
from _winreg import *
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)
def RegisterPy():
try:
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError as e:
try:
reg = CreateKey(HKEY_CURRENT_USER, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print "*** Unable to register!"
return
print "--- Python", version, "is now registered!"
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print "=== Python", version, "is already registered!"
return
CloseKey(reg)
print "*** Unable to register!"
print "*** You probably have another Python installation!"
if __name__ == "__main__":
RegisterPy()
然后在cmd中执行python register.py,便可以看到注册成功的提示。接下来我们再安装,便能够看到安装按钮可以点击了,我们安装它。安装好后可以在shell命令中通过import numpy来检测是否安装成功。
-
以上步骤完成后我们开始安装matplotlib,我这里选择是1.5.1,Python2.7的windows64位版
-链接如下:https://pypi.python.org/pypi/matplotlib/可以看到下载完后后缀是.whl,那么我们怎么进行安装呢,网上有多种方法,命令行下是pip install XX.whl就行,但有时候pip也不是那么好使,可能会因为系统和计算机的原因出现各种编译错误;这里再大家介绍一种方法,把matplotlib-1.5.1-cp27-none-win_amd64.whl后缀给改为.zip,即matplotlib-1.5.1-cp27-none-win_amd64.zip格式,然后解压到Python目录下的Lib文件夹下的site-packages目录,即可完成安装(其实whl属于编译好的文件,咱们可以提取到python依赖包中直接引用)。现在用import导入做测试,发现并不会报错。
接下来我们在官网中下载一个matplotlib示例,
surface3d_demo.py
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
-
然后用python命令执行它,发现它会提示缺少很多依赖包,具体缺什么错误中会有提示。现在我们把再把上面的依赖包下载后装入python中,给出一个python外部依赖包的下载地址:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
按照所缺的包依次在上面的链接中进行搜索,如pyparsing,按ctrl+f搜索到相应的下载链接,发现后缀也是.whl的,于是按照同样的方法更改后缀后解压到site-packages目录下,再运行surface3d_demo.py,发现图形成功生成,效果如下
欢迎大家批评指正!