Python-wordcloud-初次尝试
作为一个Python初学者,作为学习的开始,这次我根据《一件有趣的事:用Python 爬了爬自己的微信朋友》中的方法测试了一遍效果。这里记录下目前用的
wordcloud
这个包时遇到的一些问题吧。(具体执行的完整代码我就不放进来了,反正也是依据链接中写的为主。)使用
wordcloud
可以方便地生成云词图,这在数据可视化的方面会给我们带来很多便利。看别人教程写的各种顺,然而实际操作起来才发现,初学者还是容易遇到很多坑。
说明
环境:
已安装Anaconda3 (64-bit) 4.4.0
(Python 3.6.1
)。其中,代码调试在Spyder 3.1.4
中进行,安装包则直接打开Anaconda Prompt
调用cmd.exe后进行。
系统为Windows 7 和 Windows 10。
安装包的坑
安装文件的获取
首先,安装包时,直接用 pip install wordcloud
是会报错的,会有文件缺失的问题。这一点不少人都有类似反馈。
解决方案:
VC++ 14的缺失问题
安装wordcloud时出现报错信息:
error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
这种情况下,其实直接跟着提示内容进行就好。
解决方案:
打开报错提示中的链接,下载并安装
Visual C++ 2015 Build Tools
。
这个问题,我在一台电脑上这样解决(成功安装了wordcloud包并正常调试了相关Python代码)之后,尝试在另一台电脑上再安装该包,结果出现了新问题:Visual C++ 2015 Build Tools
,从官网下载下来的安装程序visualcppbuildtools_full.exe
,打开后在安装过程中需要联网获取文件,但是由于网络限制导致无法获取,于是无法安装!并且没有搜到含有完整安装文件的包。(注:该电脑所处的网络环境不一样,一般网页中的文件下载没问题,但是build tools安装时联网获取文件就受限制而不成功。)
离线安装VC++14.0 build tools的解决方案:
- 在能正常通过
visualcppbuildtools_full.exe
联网获取安装文件的电脑上,在系统自带的cmd.exe
中在对应目录下执行:
visualcppbuildtools_full.exe /layout
之后,选择下载目录存放离线安装包,然后就可以把安装文件下载下来了。
- 然后在不能联网安装的电脑上,安装离线包即可。
此处是参考msdn上找到的方法。
其它尝试
当遇到安装Visual C++ 2015 Build Tools
无法获取安装文件时(visualcppbuildtools_full.exe
只有3M,却提示默认安装的话需要4G空间,可想而知需要下载不少安装文件,实际上最后下载的安装文件也有2G左右),曾经尝试过是否可以不安装4G这么大的build tools而只安装VC++14的运行库,毕竟应该只是缺库吧?
毕竟,实际上运行库Microsoft Visual C++ 2015 Redistributable Update 3
(下载链接在此)的安装程序只有十几M大小,并且能够正常下载安装。
但我试下来的结果是,安装了这个东西以后依然会有前面一样的报错。所以还是继续老老实实下载了完整的build tools。如果你有更好的方案(不用安装这个占4G左右的大家伙,不用借助另一个网络环境下的电脑),可以和我留言。
备注
从github下载到的原wordcloud安装包中,提到如果安装还是有问题的的话可以试试安装链接中的.whl
文件。
不过,我是没下载这个.whl
文件的,前面讲到的坑补完就好了。
字体的坑
Win10和Win7的默认字体后缀竟然不一样
生成云词图的过程中,自己设置字体为“微软雅黑 粗体”,在系统(Win10)路径中找到了这个字体的路径“C:\Windows\Fonts\msyhbd.ttc”。
没想到,代码复制到第二台电脑(Win7)下执行时却报错。本来以为都是Windows默认库里的字体应该没什么问题,打开一看才发现Win7这里的字体后缀是“ttf”!
改过就正常了。
提醒以后注意:
哪怕是Windows上执行过没问题的代码,换个同样Windows的电脑,也要注意 系统默认路径和相关文件 是否有变化!
并不是全默认就都一样啊啊啊啊!!!
遮罩底图的坑
错误提示Gray-scale?
NotImplementedError: Gray-scale images TODO
一开始,我用的底图会出现如上报错。
如果把出错的如下这行
plt.imshow(my_wc.recolor(color_func=i_colors))
去掉,那么就不会报错,但是生成的云词图会只有形状、没有原图的颜色。
出现报错时用的底图如下:
这个图片有什么问题呢?为什么会有“Gray-scale images”这种提示,难道我这个图的灰度有问题?明明好几个颜色啊好吗?甚至我专心弄了个纯黑白的图,发现纯黑白色底图都能正常执行代码。
不过,把上面出错的图,和两个不出错的图对比一下读取后的数据,就能看出问题在哪里了。
如下图所示:
coloring0=np.array(Image.open("出错图.png")) #问题图,实际上,下面的白底“底图1”就是将该图直接截图保存生成的
coloring1=np.array(Image.open(