【python 的各种模块】(8) 在python使用matplotlib和wordcloud库来画wordcloud词云图

目录

目标:用python画出,网上流行的wordcloud词云图

1 准备工作

1.1环境准备

1.1.1安装步骤

1.2 资源准备

1.2.1  文本文件内容如下

1.2.2 图片资源

2 代码测试

2.1 第一版代码和效果

2.1.1 代码和效果

2.1.2 一般plt里解决中文乱码问题

2.1.3 wordcloud的中文显示方框解决办法

2.2 修改后的代码

3 语法详细

4 用法详细

4.1 导入新的模块

4.1.1 可能又是jupyternotebook这个IDE的特殊性导致的?

4.2 读取txt文件的内容,存储在变量wordlist里

4.3 用wordcloud() 函数生成图片


目标:用python画出,网上流行的wordcloud词云图

1 准备工作

1.1环境准备

  • 确保已经安装了 wordcloud 模块
  • 如果你运行代码时,加上了这句from wordcloud import WordCloud,STOPWORDS,
  • 报错: 找不到wordcloud 模块 ,那么你就需要先安装wordcloud 模块

1.1.1安装步骤

以我的环境 anaconda为例子

  • step1: 运行anaconda prompt 命令行的IDE
  • step2: 可以先输入 conda list 看看都安装了什么,也可以不看,^ ^
  • step3: 输入 pip show wordcloud ,如果显示找不到就是没有安装
  • step4: 输入 pip install wordcloud 安装完成即可
  • step5: 输入 pip show wordcloud 检查下是否安装成功,看看版本信息,也可以部看,^ ^

1.2 资源准备

1.2.1  文本文件内容如下

随便找点词语,有重复的,不重复的即可。

开心、喜悦、狂喜、尽情、快乐、愉悦、畅快、欣喜、幸福、得意、痛快、满足、欢乐、快活
快乐,舒畅,舒心,欢畅,夷悦,欣忭,怡悦,得意,愿意,欢跃,夷愉,欢快,喜悦,快活,愉快,欢乐,忻悦,欣喜,欢喜,痛快,雀跃,乐意
眉开眼笑 眉飞色舞 喜上眉梢 喜在眉宇 喜眉笑目 捧腹大笑 手舞足蹈 前仰后合
开怀大笑 欢蹦乱跳 笑容可掬 喜笑顡开 笑逐颜开 相视而笑 谈笑风生 兴高采烈
喜从天降 高高兴兴 开开心心 嘻嘻哈哈 满怀喜悦 满心欢喜 喜出望外 大喜过望
甜美、微笑、兴奋,陶醉,高兴,自豪、欣慰,满意、幸运、嬉笑,满意、幸运、嬉笑,狂笑,荣幸,痛快、满足、欢乐、快活,畅快、欣喜、幸福、得意,开心、喜悦、狂喜、尽情、快乐、愉悦、畅快、欣喜、幸福、逸乐、尽情、舒畅、愉快、喜哈、愉快

1.2.2 图片资源

  •  图片要注意,wordcloud是把词语生成在图片中,之前有图像的地方,而不是空白的地方
  • 因此不要找那种 空白区域特别大的,否则最后效果可能会让你惊讶

2 代码测试

2.1 第一版代码和效果

2.1.1 代码和效果

  • 这效果不对啊,这么多方框是什么情况?
from wordcloud import WordCloud,STOPWORDS
import PIL.Image as image#默认矩形,有想要的形状可以加入图片

#plt.rcParams['font.family']='LiSu'# 正常显示中文
#plt.rcParams['axes.unicode_minus']=False# 正常显示负号

def get_wordList():
    f = open(r'C:\Users\Administrator\Desktop\t2.txt')
    wordList = f.read()
    return wordList
def get_wordClound(mylist):
    pic_path = r'C:\Users\Administrator\Desktop\tp2.jpg'#注意路径
    img_mask = np.array(image.open(pic_path))#图片解码 
    wordcloud = WordCloud(background_color = "white",mask = img_mask).generate(mylist)
    #font_path ="C:/Windows/Fonts/msyh.ttc",
    #mask = img_mask掩码 generate(mylist)获取数据
    plt.imshow(wordcloud)
    plt.axis("off")#去除坐标轴
wordList = get_wordList()
get_wordClound(wordList)

plt.title("wordcloud词云实验")
plt.show()

2.1.2 一般plt里解决中文乱码问题

matplotlib 对中文的支持有问题

一般画图时,遇到图片相关中文显示问题,一般在代码前面加这2句

plt.rcParams['font.family']='LiSu'# 正常显示中文
plt.rcParams['axes.unicode_minus']=False# 正常显示负号

2.1.3 wordcloud的中文显示方框解决办法

  • wordcloud = WordCloud(background_color = "white",mask = img_mask).generate(mylist)
  • 函数WordCloud()加上 font_path ="C:/Windows/Fonts/msyh.ttc",
  • wordcloud = WordCloud(font_path ="C:/Windows/Fonts/msyh.ttc",background_color = "white",mask = img_mask).generate(mylist)

2.2 修改后的代码

from wordcloud import WordCloud,STOPWORDS
import PIL.Image as image#默认矩形,有想要的形状可以加入图片

plt.rcParams['font.family']='LiSu'# 正常显示中文
plt.rcParams['axes.unicode_minus']=False# 正常显示负号

def get_wordList():
    f = open(r'C:\Users\Administrator\Desktop\t2.txt')
    wordList = f.read()
    return wordList
def get_wordClound(mylist):
    pic_path = r'C:\Users\Administrator\Desktop\tp2.jpg'#注意路径
    img_mask = np.array(image.open(pic_path))#图片解码 
    wordcloud = WordCloud(font_path ="C:/Windows/Fonts/msyh.ttc",background_color = "white",mask = img_mask).generate(mylist)
    #mask = img_mask掩码 generate(mylist)获取数据
    plt.imshow(wordcloud)
    plt.axis("off")#去除坐标轴
wordList = get_wordList()
get_wordClound(wordList)

plt.title("wordcloud词云实验")
plt.show()

3 语法详细

核心

    wordcloud = WordCloud(font_path ="C:/Windows/Fonts/msyh.ttc",background_color = "white",mask = img_mask).generate(mylist)

4 用法详细

4.1 导入新的模块

from wordcloud import WordCloud,STOPWORDS
import PIL.Image as image  #默认矩形,有想要的形状可以加入图片

#居然不需要 import  matplotlib ?

4.1.1 可能又是jupyternotebook这个IDE的特殊性导致的?

jupyternotebook

  • 不用写 plt.show()  也能显示matplotlib.pyplot 下的figure内的图形
  • 不支持弱引用

4.2 读取txt文件的内容,存储在变量wordlist里

def get_wordList():
    f = open(r'C:\Users\Administrator\Desktop\t2.txt')
    wordList = f.read()
    return wordList

4.3 用wordcloud() 函数生成图片


def get_wordClound(mylist):
    pic_path = r'C:\Users\Administrator\Desktop\tp2.jpg'#注意路径
    img_mask = np.array(image.open(pic_path))#图片解码 
    wordcloud = WordCloud(font_path ="C:/Windows/Fonts/msyh.ttc",background_color = "white",mask = img_mask).generate(mylist)
    #mask = img_mask掩码 generate(mylist)获取数据
    plt.imshow(wordcloud)
    plt.axis("off")#去除坐标轴

    pic_path = r'C:\Users\Administrator\Desktop\tp2.jpg'#注意路径
    img_mask = np.array(image.open(pic_path))#图片解码 

核心

    wordcloud = WordCloud(font_path ="C:/Windows/Fonts/msyh.ttc",background_color = "white",mask = img_mask).generate(mylist)


wordList = get_wordList()
get_wordClound(wordList)

相关推荐

  1. echartsecharts-wordcloud使用方法

    2023-12-27 16:40:03       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-27 16:40:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-27 16:40:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-27 16:40:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-27 16:40:03       18 阅读

热门阅读

  1. MongoDB 根据 _id 获取记录的创建时间并回填记录中

    2023-12-27 16:40:03       29 阅读
  2. Jtti 香港服务器使用RAID技术的优势

    2023-12-27 16:40:03       36 阅读
  3. Python爬虫如何处理页面中的相对链接

    2023-12-27 16:40:03       41 阅读
  4. centos mysql8 设置远程访问

    2023-12-27 16:40:03       43 阅读
  5. 零基础学C语言——内存管理

    2023-12-27 16:40:03       46 阅读
  6. 前端小白年度总结

    2023-12-27 16:40:03       31 阅读
  7. Lua的底层原理与C#交互原理浅析【更新中】

    2023-12-27 16:40:03       46 阅读
  8. 【C语言】指针

    2023-12-27 16:40:03       41 阅读
  9. c语言广度优先搜索(Breadth-First Search,BFS)

    2023-12-27 16:40:03       45 阅读