怎么使用Python轻松实现绘制词云图(python,开发技术)

时间:2024-04-29 18:46:43 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、一般词云绘制

制作词云图首先得有词吧,词从哪来,迪迪想了半天硬是没想出来。既然没思路,那就拿过气的后浪软文玩一玩吧,对于后浪大家褒贬不一,迪迪也不敢妄加评论。

首先,咱们把后浪全文保存为HL.txt,截取部分,长这样:

怎么使用Python轻松实现绘制词云图

接着,下载并导入制作词云所需的库,各个库的功能都有注释。

importjieba#结巴分词fromwordcloudimportWordCloud#词云展示库fromPILimportImage#图像处理库importnumpyasnp#支持多维数组和矩阵运算importmatplotlib.pyplotasplt#图像展示库

然后,把HL.txt的内容读出来。

#读取文本内容withopen('HL.txt','r',encoding="UTF-8")asf:file=f.read()#将文本读取为整个字符串,readlines可以按行读取

紧接着,咱们需要把读取的整个字符串分成一个个的词,jieba出征,寸草不生。

#进行分词data_cut=jieba.cut(file,cut_all=False)#精确模式分词

分完词后发现,什么逗号啊、分号啊、句号啊也作为单独的词全出来了,那可不行,咱得想办法stop它们。 构建停词表,把看不惯的词remove掉,没错,我不喜欢口口声声的我们你们啥的。

stop_words=[",","。",";","、","我们","你们"]#自定义停词列表

当然,有朋友会说,你这是因为文本内容少,自己搞个停词表方便,可要是成千上万的文本你这点停词肯定不够用啊。OK,那咱们百度下停词表,随便download一个,保存为stopwords.txt。stopwords.txt共有1893个常用停词,长这样:

怎么使用Python轻松实现绘制词云图

有了停词表,咱得用Python读出来。

stop_words=[]#创建空列表withopen("stopwords.txt",'r',encoding='utf-8')asf:forlineinf:iflen(line)>0:stop_words.append(line.strip())#把停词追加到stop_words列表中

停词准备好了,接下来就是remove停词,拿到我们需要的词了。

data_result=[iforiindata_cutifinotinstop_words]#获取需要的词

print一下data_result,长这样:

怎么使用Python轻松实现绘制词云图

这可不行,咱们需要的是由一个个词构成的字符串。因此,需要用join函数以空格分隔并将所有词连接成一个新的字符串。replace在这表示将换行(\n)符替换为空。

text="".join(data_result).replace("\n","")#连接成字符串print(text)

咱们打印一下text看效果:

怎么使用Python轻松实现绘制词云图

词有了,可以开始设计词云图,由于所有词都是中文,而WordCloud默认不支持中文,摔!咱还得指定字体文件路径,否则会出现乱码。迪迪毕竟学欧体过来的,于是找了个小楷字体,你可以根据自己的喜好设置不同的字体,网上免费字体一大堆。

wc=WordCloud(#设置字体,不指定就会出现乱码,这个字体文件需要下载font_path="演示悠然小楷.ttf",background_color="black",max_words=5000,)

配置好之后,咱生成图片并展示出来。

#生成词云图wc.generate(text)#保存词云图wc.to_file("IMJG.jpg")#保存图片#展示plt.imshow(wc)#对图片进行处理,并显示其格式plt.axis("off")#关闭坐标轴plt.show()#将图片显示出来

效果如下:

怎么使用Python轻松实现绘制词云图

到这,你可能以为迪迪准备写结语了。不好意思,还没完,咱们的目标可不能局限在这,在诗和远方,哦不,是定制属于自己的词云图。 迪迪准备给词云加个自定义的底图,让词云看起来更形象些。想了很久,不知道用什么图合适。于是迪迪打开了好久没用的Photoshop cc,绘制了一个你用美图秀秀都能做的比我好看的png。

怎么使用Python轻松实现绘制词云图

我把这张图片命名为JG.png,并用Image方法打开。

#用Image方法打开图片images=np.array(Image.open("JG.png"))

把images配置到词云wc中去,传给参数mask。

wc=WordCloud(#设置字体,不指定就会出现乱码,这个字体文件需要下载font_path="演示悠然小楷.ttf",background_color="black",max_words=5000,mask=images)

重新生成并保存下词云图,效果如下:

怎么使用Python轻松实现绘制词云图

哈哈,略丑。朋友们有兴趣可以自己做个底图或者网上download一个底图试试,底图尽量清晰、颜色尽量突出就好啦。

还有朋友可能会问为啥我文章开头的词云图是一个个句子,这里一并说明下,因为读取HL.txt的时候用的是readlines啊~

二、根据词频绘制词云

一般的词云制作用以上方法就可以啦,但现实生活中我们的需求可能更为复杂,根据词频绘制词云图的案例也更为多见。以下就是J哥经常用到的一个实战案例,开源代码奉上。

大致思路是从Mysql数据库中提取上万条交易记录,用sql语句把交易规模前100的品牌select出来,然后根据各个品牌交易规模的大小制作词云,文字越大的表示交易规模越大。

#-*-coding=uft-8-*-#@Time:2020/5/2310:30上午#@Author:我是J哥#@File:my_wordcloud.py#给定词频制作词云图frommatplotlibimportpyplotasplt#绘图,数据可视化fromwordcloudimportWordCloud#词云fromPILimportImage#图片处理importnumpyasnp#矩阵运算importpymysql#数据库importpandasaspd#数据处理#准备词云所需文字(词)conn=pymysql.connect(host="localhost",user="你的",passwd="你的",db="test",port=3306,charset="utf8")cur=conn.cursor()sql="selectbrandasname,round(sum(jine)/10000,0)asvaluefromSc_month5groupbynameorderbyvaluedesclimit100;"df=pd.read_sql(sql,conn)print(df)name=list(df.name)#词value=df.value#词的频率dic=dict(zip(name,value))#词频以字典形式存储#print(dic)cur.close()conn.close()img=Image.open("tree.png")img_arry=np.array(img)wc=WordCloud(background_color="white",mask=img_arry,max_words=1000,max_font_size=500,#font_path="演示悠然小楷.ttf"#font_path="有字库龙藏体.ttf"font_path="演示悠然小楷.ttf")wc.generate_from_frequencies(dic)#以词频生成词云#绘制图片fig=plt.figure(1)plt.imshow(wc)plt.axis("off")plt.show()#输出词云图片到文件plt.savefig("JGJG.jpg",dpi=400)

生成的词云图长这样:

怎么使用Python轻松实现绘制词云图

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么使用Python轻松实现绘制词云图的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:JVM常见垃圾收集器有哪些下一篇:

14 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18