1. 首页
  2. 未分类

Python数据可视化:WordCloud入门(大伙都在用)

“u003Cdivu003Eu003Cpu003EWordCloud是一种很好的展现数据的方式,网上也有不少小工具和在线网页。u003Cu002Fpu003Eu003Cpu003E但是有些不支持中文,有些安装复杂,所以决定用Python实现。u003Cu002Fpu003Eu003Cpu003E主要参考官网,通过官网的例子,讲一下WordCloud的制作。u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E发现有很多想要学习Python却不知道如何下手的朋友,我这里整理了一些关于Python的学习资料,从基础到入门到实战都有!有需要的朋友可以关注并私信“01”免费获取…u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Ch1u003Eu003Cstrongu003E主要流程u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Culu003Eu003Cliu003E获取内容的路径u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E如果是一段文字,系统自动算频次u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E你也可以直接导入统计好的频次u003Cu002Fliu003Eu003Cliu003E设置字体u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E一般字体路径在C:\Windows\Fonts,你可以选自己喜欢的中文或者英文字体u003Cu002Fliu003Eu003Cliu003E切割中文字符u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E英文字符就不用切割了u003Cu002Fliu003Eu003Cliu003E输入WordCloud的参数u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E背景色u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E字号u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E生成的形状u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E颜色u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E字体大小u003Cu002Fliu003Eu003Cli class=”ql-indent-1″u003E字体旋转等等u003Cu002Fliu003Eu003Cliu003E生成WordCloudu003Cu002Fliu003Eu003Cliu003E用matplotlib显示图片u003Cu002Fliu003Eu003Cu002Fulu003Eu003Ch1u003Eu003Cstrongu003E效果图u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F62929b7ddd7a4f49986887b7f3160296″ img_width=”424″ img_height=”222″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Ffb8204bc82394e44bc8e6dd9edddc612″ img_width=”424″ img_height=”222″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fed24250fcf384c6b9f86c5155d86c9f4″ img_width=”640″ img_height=”480″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Ff1188f212002471b8a3b06d68c543149″ img_width=”640″ img_height=”480″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F62e48470a200417b871ab8ba13e84a03″ img_width=”600″ img_height=”800″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fe9b8e14a8da940288ca9fc4cf903ef26″ img_width=”600″ img_height=”800″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003Eu003Cstrongu003E安装库u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E老规矩,首先,你要安装库。u003Cu002Fpu003Eu003Cpu003E最基本的两个:u003Cu002Fpu003Eu003Cpu003Epip install wordcloud #这是WordCloud的库u003Cu002Fpu003Eu003Cpu003Epip install matplotlib #显示图像u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E一个单词构造WordCloudu003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E在这个代码中,我们需要安装一个numpy库u003Cu002Fpu003Eu003Cpu003E(大部分小伙伴应该都装过,就不用再装了)u003Cu002Fpu003Eu003Cpreu003Epip install numpy u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E这里用这个库,主要是想用数学坐标生成一个简单的背景图案,比如圆形、方形u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Ffa97f6c5e0c24ede9d7fe6ca35a6885a” img_width=”267″ img_height=”252″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E基本步骤u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E1、输入单词u003Cu002Fpu003Eu003Cpu003E2、用numpy 生成一个形状,下面生成了一个圆形masku003Cu002Fpu003Eu003Cpu003E3、输入WordCloud的参数(包括背景色、是否重复、图案形状)u003Cu002Fpu003Eu003Cpu003E4、用matplotlib显示图片u003Cu002Fpu003Eu003Cpreu003Eimport numpy as npu003Cbru003Eimport matplotlib.pyplot as pltu003Cbru003Efrom wordcloud import WordCloudu003Cbru003Etext = “square” #输入你要的单词u003Cbru003Ex, y = np.ogrid[:300, :300] #快速产生一对数组u003Cbru003E# 产生一个以(150,150)为圆心,半径为130的圆形masku003Cbru003Emask = (x – 150) ** 2 + (y – 150) ** 2 > 130 ** 2 #此时mask是bool型u003Cbru003Emask = 255 * mask.astype(int) #变量类型转换为int型u003Cbru003Ewc = WordCloud(u003Cbru003E background_color=”white”, #背景颜色为“白色”u003Cbru003E repeat=True, #单词可以重复u003Cbru003E mask=mask #指定形状,就是刚刚生成的圆形u003Cbru003E )u003Cbru003Ewc.generate(text) #从文本生成wordcloudu003Cbru003Eplt.axis(“off”) #把作图的坐标轴关掉u003Cbru003Eplt.imshow(wc, interpolation=”bilinear”)u003Cbru003Eplt.show()u003Cbru003Eu003Cu002Fpreu003Eu003Ch1u003Eu003Cstrongu003E生成WordCloudu003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E最简单的生成方式,文本内容都是英文,直接用系统默认的形状(一个长方形)u003Cu002Fpu003Eu003Cpu003E我这边是导入了一个商务英语的txt,所以可以看到,出现次数最多的单词是company,然后是business、new、work等单词,我还看到了money,哈哈~u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F62929b7ddd7a4f49986887b7f3160296″ img_width=”424″ img_height=”222″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E基本步骤u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E1、获取内容txt的路径u003Cu002Fpu003Eu003Cpu003E2、输入WordCloud的参数(包括背景色、字号等)u003Cu002Fpu003Eu003Cpu003E3、生成WordCloudu003Cu002Fpu003Eu003Cpu003E4、用matplotlib显示图片u003Cu002Fpu003Eu003Cpu003E*WordCloud有很多参数,如果你不写,都是默认的。比如背景色默认黑色。u003Cu002Fpu003Eu003Cpreu003Eimport osu003Cbru003Efrom os import pathu003Cbru003Efrom wordcloud import WordCloudu003Cbru003Efrom matplotlib import pyplot as pltu003Cbru003E# 获取当前文件路径u003Cbru003Ed = path.dirname(__file__) if “__file__” in locals() else os.getcwd()u003Cbru003E# 获取文本txt的路径(txt和代码在一个路径下面)u003Cbru003Etext = open(path.join(d,’BusinessEnglish.txt’)).read()u003Cbru003E# 生成词云u003Cbru003Ewc = WordCloud(u003Cbru003E scale=2,u003Cbru003E max_font_size=100, #最大字号u003Cbru003E background_color=’white’ #设置背景颜色u003Cbru003E )u003Cbru003Ewc.generate(text) # 从文本生成wordcloudu003Cbru003E# wc.generate_from_text(text) #用这种表达方式也可以 u003Cbru003E# 显示图像u003Cbru003Eplt.imshow(wc,interpolation=’bilinear’)u003Cbru003Eplt.axis(‘off’)u003Cbru003Eplt.tight_layout()u003Cbru003Ewc.to_file(‘标签云效果图.png’) # 储存图像u003Cbru003E#plt.savefig(‘标签云效果图.png’,dpi=200) #用这个可以指定像素u003Cbru003Eplt.show()u003Cbru003Eu003Cu002Fpreu003Eu003Ch1u003Eu003Cstrongu003E设置WordCloud形状u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E都是长方形、圆形、正方形这种,好像不够炫酷u003Cu002Fpu003Eu003Cpu003E为了炫酷,我们可以给它设置不同的形状,比如云朵、爱心等等u003Cu002Fpu003Eu003Cpu003E下面我们用Alice的小裙子做个实例u003Cu002Fpu003Eu003Cpu003E这个图片长这样u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002F8612080142ca4a6b9cc51f064c983c6b” img_width=”640″ img_height=”480″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E我们生成的图片是这样的,可以看到,完整保留了上图的轮廓u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fd6109e96d5a448ea9f8a1a7f899018c0″ img_width=”640″ img_height=”480″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E基本步骤u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E和之前基本都是一致的,就是多了一步,导入指定图片,获取图片轮廓u003Cu002Fpu003Eu003Cpu003E1、获取内容txt的路径u003Cu002Fpu003Eu003Cpu003E2、输入WordCloud的参数(包括背景色、字号等),指定了生成的形状u003Cu002Fpu003Eu003Cpu003E3、生成WordCloudu003Cu002Fpu003Eu003Cpu003E4、用matplotlib显示图片u003Cu002Fpu003Eu003Cpu003E*代码中增加了一个stopwords,有些你觉得没意义的单词,不想显示在图片上,你就可以放在这里u003Cu002Fpu003Eu003Cpreu003Efrom os import pathu003Cbru003Efrom PIL import Imageu003Cbru003Eimport numpy as npu003Cbru003Eimport matplotlib.pyplot as pltu003Cbru003Eimport osu003Cbru003Efrom wordcloud import WordCloud, STOPWORDSu003Cbru003E# 获取当前文件路径u003Cbru003Ed = path.dirname(__file__) if “__file__” in locals() else os.getcwd()u003Cbru003E# 获取文本txt的路径(txt和代码在一个路径下面)u003Cbru003Etext = open(path.join(d, ‘BusinessEnglish.txt’)).read()u003Cbru003E# 读取mask的图像(图像和代码在一个路径下面)u003Cbru003Ealice_mask = np.array(Image.open(path.join(d, “alice_mask.png”)))u003Cbru003E# 设置不显示单词,比如said、in、on、is这种单词u003Cbru003Estopwords = set(STOPWORDS)u003Cbru003Estopwords.add(“said”)u003Cbru003E# 设置词云参数u003Cbru003Ewc = WordCloud(background_color=”white”, u003Cbru003E max_words=2000, u003Cbru003E mask=alice_mask,u003Cbru003E stopwords=stopwords, u003Cbru003E contour_width=3, #设置轮廓宽度u003Cbru003E contour_color=’steelblue’) #设置轮廓颜色u003Cbru003E# 从文本生成wordcloudu003Cbru003Ewc.generate(text)u003Cbru003E# 保存到文件u003Cbru003Ewc.to_file(path.join(d, “alice.png”))u003Cbru003E# 显示图片u003Cbru003Eplt.imshow(wc, interpolation=’bilinear’)u003Cbru003Eplt.axis(“off”)u003Cbru003Eplt.figure() #新建一个图片,把mask也显示出来u003Cbru003Eplt.imshow(alice_mask, cmap=plt.cm.gray, interpolation=’bilinear’)u003Cbru003Eplt.axis(“off”)u003Cbru003Eplt.show()u003Cbru003Eu003Cu002Fpreu003Eu003Ch1u003Eu003Cstrongu003E根据图片调整颜色u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E原图是这样的u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fea7f7a979dc3456d827ab9b57eeccde3″ img_width=”600″ img_height=”800″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E如果我们直接根据上一步,获取图片轮廓,可以得到下图u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F52c29977e04a44aba66816156cd0bceb” img_width=”600″ img_height=”800″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E我们进一步,根据原图,调整颜色u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0ec2024ee5a8477db7078ef65e77a2ca” img_width=”600″ img_height=”800″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E其实就是获取了图片颜色,也是一行代码u003Cu002Fpu003Eu003Cpu003Eimage_colors = ImageColorGenerator(alice_coloring)u003Cu002Fpu003Eu003Cpu003E完整代码u003Cu002Fpu003Eu003Cpu003Efrom os import pathu003Cu002Fpu003Eu003Cpu003Efrom PIL import Imageu003Cu002Fpu003Eu003Cpu003Eimport numpy as npu003Cu002Fpu003Eu003Cpu003Eimport matplotlib.pyplot as pltu003Cu002Fpu003Eu003Cpu003Eimport osu003Cu002Fpu003Eu003Cpu003Efrom wordcloud import WordCloud, STOPWORDS, ImageColorGeneratoru003Cu002Fpu003Eu003Cpu003E# 获取当前文件路径u003Cu002Fpu003Eu003Cpu003Ed = path.dirname(__file__) if “__file__” in locals() else os.getcwd()u003Cu002Fpu003Eu003Cpu003E# 获取文本txt的路径(txt和代码在一个路径下面)u003Cu002Fpu003Eu003Cpu003Etext = open(path.join(d, ‘BusinessEnglish.txt’)).read()u003Cu002Fpu003Eu003Cpu003E# 读取我要的图片文件u003Cu002Fpu003Eu003Cpu003Ealice_coloring = np.array(Image.open(path.join(d, “alice_color.png”)))u003Cu002Fpu003Eu003Cpu003E# 设置不显示的单词u003Cu002Fpu003Eu003Cpu003Estopwords = set(STOPWORDS)u003Cu002Fpu003Eu003Cpu003Estopwords.add(“said”)u003Cu002Fpu003Eu003Cpu003E# 设置词云参数u003Cu002Fpu003Eu003Cpu003Ewc = WordCloud(background_color=”white”, u003Cu002Fpu003Eu003Cpu003E max_words=2000, u003Cu002Fpu003Eu003Cpu003E mask=alice_coloring,u003Cu002Fpu003Eu003Cpu003E stopwords=stopwords, u003Cu002Fpu003Eu003Cpu003E max_font_size=40, u003Cu002Fpu003Eu003Cpu003E random_state=42)u003Cu002Fpu003Eu003Cpu003E# 从文本生成wordcloudu003Cu002Fpu003Eu003Cpu003Ewc.generate(text)u003Cu002Fpu003Eu003Cpu003E# 根据图片,创建颜色u003Cu002Fpu003Eu003Cpu003Eimage_colors = ImageColorGenerator(alice_coloring)u003Cu002Fpu003Eu003Cpu003E# 把图片分成3份u003Cu002Fpu003Eu003Cpu003Efig, axes = plt.subplots(1, 3)u003Cu002Fpu003Eu003Cpu003Eaxes[0].imshow(wc, interpolation=”bilinear”)u003Cu002Fpu003Eu003Cpu003E# recolor wordcloud and showu003Cu002Fpu003Eu003Cpu003E# we could also give color_func=image_colors directly in the constructoru003Cu002Fpu003Eu003Cpu003Eaxes[1].imshow(wc.recolor(color_func=image_colors), interpolation=”bilinear”)u003Cu002Fpu003Eu003Cpu003Eaxes[2].imshow(alice_coloring, cmap=plt.cm.gray, interpolation=”bilinear”)u003Cu002Fpu003Eu003Cpu003Efor ax in axes:u003Cu002Fpu003Eu003Cpu003E ax.set_axis_off()u003Cu002Fpu003Eu003Cpu003E# 单独显示图片 u003Cu002Fpu003Eu003Cpu003E# plt.figure() u003Cu002Fpu003Eu003Cpu003E# plt.imshow(wc, interpolation=”bilinear”)u003Cu002Fpu003Eu003Cpu003E# plt.axis(“off”)u003Cu002Fpu003Eu003Cpu003E# plt.figure() u003Cu002Fpu003Eu003Cpu003E# plt.imshow(wc.recolor(color_func=image_colors), interpolation=”bilinear”)u003Cu002Fpu003Eu003Cpu003E# plt.axis(“off”)u003Cu002Fpu003Eu003Cpu003E# plt.figure() u003Cu002Fpu003Eu003Cpu003E# plt.imshow(alice_coloring, cmap=plt.cm.gray, interpolation=”bilinear”)u003Cu002Fpu003Eu003Cpu003E# plt.axis(“off”)u003Cu002Fpu003Eu003Cpu003Eplt.show()u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E用频率绘制WordCloudu003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E上面是直接把一个txt输进去,系统自动给你算出现次数的u003Cu002Fpu003Eu003Cpu003E但是实际过程中,我们有时候,是知道单词出现次数的,我们就想根据已知的次数显示u003Cu002Fpu003Eu003Cpu003E这一步,其实就改了一行代码,u003Cu002Fpu003Eu003Cpu003E原来是这样的u003Cu002Fpu003Eu003Cpreu003Ewc.generate(text) u003Cbru003E# 这里的text是一段文字u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E现在是这样的u003Cu002Fpu003Eu003Cpu003Ewc.generate_from_frequencies(text) u003Cu002Fpu003Eu003Cpu003E# 这里的text是一个字典u003Cu002Fpu003Eu003Cpu003E# ‘ken’: 1, ‘was’: 47, ‘hot’: 2, ‘water’: 2u003Cu002Fpu003Eu003Cpu003E如果你已经有一个字典,直接代进去就好了u003Cu002Fpu003Eu003Cpu003E这里给大家详细看一下,如果假设我没有这个字典u003Cu002Fpu003Eu003Cpu003E我还是一段文字,我想先生成这个字典,再代入进去u003Cu002Fpu003Eu003Cpu003E这里,你需要安装一个库multidict,创建一键多值字典u003Cu002Fpu003Eu003Cpreu003Epip install multidictu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E用multidict这个库,我可以把文本变成一个字典u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F30abba9f54694c85b0bca7cd659cfbdf” img_width=”650″ img_height=”30″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E通过上图就可以看到,这个字典有1105个组合,每一个单词,都统计了出现次数u003Cu002Fpu003Eu003Cpreu003Eimport multidict as multidictu003Cbru003Eimport numpy as npu003Cbru003Eimport osu003Cbru003Eimport reu003Cbru003Efrom PIL import Imageu003Cbru003Efrom os import pathu003Cbru003Efrom wordcloud import WordCloudu003Cbru003Eimport matplotlib.pyplot as pltu003Cbru003Edef getFrequencyDictForText(sentence):u003Cbru003E fullTermsDict = multidict.MultiDict()u003Cbru003E tmpDict = {}u003Cbru003E # making dict for counting frequenciesu003Cbru003E for text in sentence.split(” “):u003Cbru003E if re.match(“a|the|an|the|to|in|for|of|or|by|with|is|on|that|be”, text):u003Cbru003E continueu003Cbru003E val = tmpDict.get(text, 0)u003Cbru003E tmpDict[text.lower()] = val + 1u003Cbru003E for key in tmpDict:u003Cbru003E fullTermsDict.add(key, tmpDict[key])u003Cbru003E return fullTermsDictu003Cbru003Edef makeImage(text):u003Cbru003E alice_mask = np.array(Image.open(“alice_mask.png”))u003Cbru003E wc = WordCloud(u003Cbru003E background_color=”white”,u003Cbru003E max_words=1000, u003Cbru003E mask=alice_masku003Cbru003E )u003Cbru003E # generate word cloudu003Cbru003E wc.generate_from_frequencies(text)u003Cbru003E # showu003Cbru003E plt.imshow(wc, interpolation=”bilinear”)u003Cbru003E plt.axis(“off”)u003Cbru003E wc.to_file(‘frequency.png’) # 储存图像u003Cbru003E plt.show()u003Cbru003E# 获取当前文件路径u003Cbru003Ed = path.dirname(__file__) if “__file__” in locals() else os.getcwd()u003Cbru003E# 获取文本txt的路径(txt和代码在一个路径下面)u003Cbru003Etext = open(path.join(d, ‘BusinessEnglish.txt’), encoding=’utf-8′)u003Cbru003Etext = text.read()u003Cbru003EmakeImage(getFrequencyDictForText(text))u003Cbru003Eu003Cu002Fpreu003Eu003Ch1u003Eu003Cstrongu003E生成中英文WordCloudu003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E生成一个中英文混搭的WordCloudu003Cu002Fpu003Eu003Cpu003E如果你的txt全是中文,那就是全中文的u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Ffb8204bc82394e44bc8e6dd9edddc612″ img_width=”424″ img_height=”222″ alt=”Python数据可视化:WordCloud入门(大伙都在用)” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E基本步骤u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E和之前基本也都一样,就是中文字符,需要增加一个中文词语切割u003Cu002Fpu003Eu003Cpu003E这就需要添加一个库u003Cu002Fpu003Eu003Cpu003Epip install jieba # 中文切割u003Cu002Fpu003Eu003Cpu003E1、获取内容txt的路径u003Cu002Fpu003Eu003Cpu003E2、设置字体u003Cu002Fpu003Eu003Cpu003E3、切割中文字符u003Cu002Fpu003Eu003Cpu003E4、输入WordCloud的参数(包括背景色、字号等),指定了生成的形状u003Cu002Fpu003Eu003Cpu003E5、生成WordCloudu003Cu002Fpu003Eu003Cpu003E6、用matplotlib显示图片u003Cu002Fpu003Eu003Cpreu003Eimport osu003Cbru003Efrom os import pathu003Cbru003Efrom wordcloud import WordCloudu003Cbru003Efrom matplotlib import pyplot as pltu003Cbru003Eimport jiebau003Cbru003E# 获取当前文件路径u003Cbru003Ed = path.dirname(__file__) if “__file__” in locals() else os.getcwd()u003Cbru003E# 获取文本txtu003Cbru003Etext = open(path.join(d,’商务英语.txt’),encoding=’utf-8′).read()u003Cbru003E# 设置中文字体u003Cbru003Efont_path = ‘C:\Windows\Fonts\simfang.ttf’ # 字体路径u003Cbru003E# 精确切割中文字符u003Cbru003Etext = ‘ ‘.join(jieba.cut(text, cut_all = False))u003Cbru003E# 生成词云u003Cbru003Ewc = WordCloud(u003Cbru003E font_path = font_path, #字体路径u003Cbru003E scale=2,u003Cbru003E max_words = 100, #最多词个数u003Cbru003E max_font_size=100, #最大字号u003Cbru003E background_color=’white’ #背景色u003Cbru003E )u003Cbru003Ewc.generate(text)u003Cbru003E# 显示图像u003Cbru003Eplt.imshow(wc,interpolation=’bilinear’)u003Cbru003Eplt.axis(‘off’)u003Cbru003Eplt.tight_layout()u003Cbru003E# 储存图像u003Cbru003E#wc.to_file(‘标签云效果图.png’)u003Cbru003E#plt.savefig(‘标签云效果图.png’,dpi=200)u003Cbru003Eplt.show()u003Cbru003Eu003Cu002Fpreu003Eu003Cu002Fdivu003E”

原文始发于:Python数据可视化:WordCloud入门(大伙都在用)

主题测试文章,只做测试使用。发布者:熱鬧獨處,转转请注明出处:http://www.cxybcw.com/18231.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code