Advertisement

小白入门python之数据可视化(词云图)

阅读量:

词云的生成需要确认已安装了wordcloud、matplotlib,下载库可以通过cmd或者直接在jupyter notebook上输入指令进行下载,也可以从网站https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud上手动下载,安装包放置在python的scripts文件里,并将自己需要的文本记录在文本文件(txt格式)上,也可以先准备好想要的图片样式;

2.可利用下方类似代码实现python定位问题,os.getcwd() 可以知道现在python在哪里(文件位置需根据自己的情况决定)

复制代码
 import os

    
 os.chdir("C:\ Users\ 读书人mn\ Desktop\ 123123")
    
    
    
    

3.了解定位后,可以利用文件路径打开文件时,需要注意添加这一部分 encoding='utf-8',设置编码格式,encoding是编码的意思,在python中,Unicode类型是作为编码的基础类型。

复制代码
    text=open('123.txt','r',encoding='utf-8').read()
    

4.导入wordcloud matplotlib开始生成初版的词云图。如果想要显示出字体需要定义font并引用字体的路径,设置字体的大小

复制代码
 from wordcloud import WordCloud

    
 import matplotlib.pyplot as plt
    
 font=r'C:\ Windows\ Fonts\ simkai.ttf'
    
 wc=WordCloud(font_path=font,width=800,height=600).generate(text)
    
 plt.imshow(wc)
    
 plt.axis('off')
    
 plt.show()
    
    
    
    

5.在得到初版的词云图后,我们可以利用jieba库对文本进行分词处理,遍历整个文本并计算词语的数量,利用字典中键值对的对应关系,将词和其数量进行意义对应。

同时,建立另外一个词库,将无效、不需要的词从现有的词库中剔除。最后利用字典中的值进行词语的排序生成新的文本内容。

复制代码
 import jieba

    
 import jieba.posseg as pseg
    
 with open('C:\ Users\ 读书人mn\ Desktop\ 123123\ 123.txt','r',encoding='utf-8')as f:
    
     renmin=f.read()
    
     
    
 jieba.load_userdict('C:\ Users\ 读书人mn\ Desktop\ 123123\ 123.txt')
    
 seg_list=jieba.cut(renmin,cut_all=False)
    
  
    
 tf={}
    
 for seg in seg_list:
    
     if seg in tf:
    
     tf[seg]+=1
    
     else:
    
     tf[seg]=1
    
 ci=list(tf.keys())
    
 import os
    
 os.chdir("C:\ Users\ 读书人mn\ Desktop\ 123123")
    
 with open('234.txt','r',encoding='utf-8') as ft:
    
     stopword=ft.read()
    
     
    
 for seg in ci:
    
     if tf[seg]<5 or len(seg)<2 or seg in stopword or "一" in seg:
    
     tf.pop(seg)
    
 print(tf)
    
  
    
 ci, num, data = list(tf.keys()), list(tf.values()),[]
    
 for i in range(len(tf)):
    
     data.append((num[i],ci[i])) 
    
 data.sort()
    
 data.reverse()#升序排序后逆序,得到所需的降序排列
    
  
    
 tf_sorted={}
    
 print(len(data),data[0],data[0][0],data[0][1])
    
  
    
 for i in range(len(data)):  
    
     tf_sorted[data[i][1]]=data[i][0]
    
  
    
 print(tf_sorted)
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/AkwoaROuNejK7gh0M2V5BTPbdFrs.png)

6.最后提取原图信息并从原图提取色彩

复制代码
 import os

    
 os.chdir("C:\ Users\ 读书人mn\ Desktop\ 123123")
    
 text=open('123.txt','r',encoding='utf-8').read()
    
 from wordcloud import WordCloud,ImageColorGenerator
    
 import matplotlib.pyplot as plt
    
 from PIL import Image
    
 import numpy as np
    
 mask=np.array(Image.open("C:\ Users\ 读书人mn\ Desktop\ 123123\ rainbow.png"))
    
  
    
 font=r'C:\ Windows\ Fonts\ simkai.ttf'
    
 wc=WordCloud(background_color="white",mask=mask,font_path=font,width=800,height=600).generate_from_frequencies(tf_sorted)
    
  
    
 image_colors=ImageColorGenerator(mask)
    
 plt.imshow(wc.recolor(color_func=image_colors))
    
 plt.imshow(wc)
    
 plt.axis('off')
    
 plt.show()
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/5wnPKqfY8rape03vCiX9g4VFJSZO.png)

最后的效果展示~

心得:

1.文件定位问题:无论使用绝对路径还是相对路径,且路径没有错误的情况下,程序依旧显示“文件不存在”,找不到文件。

解决方法:通过更改文件名称和文件所在位置,文件不要保存得太“深”,同时可以尝试简单的数字123等进行文件命名;

2.自己手动输入程序代码时,最容易犯的错误就是输入错字母,不分大小写。

3.如果文本内容是中文,字体选择时也需要注意选择中文样式,英文显示时依然会出现问题

全部评论 (0)

还没有任何评论哟~