python 绘制词云图(自定义png形状、指定字体、颜色)最全!!!

前言

本文为分总结构,有特定需求的可以查阅前部分分结构的对应板块,最后的总结不懂的可以在分板块查阅解释。分板块分别有引用的库、阅读文本、分词并设置停用词、设置png掩膜、字体设置、生成词云图,感谢您点开这篇分享,祝顺利。

目录

前言

一、引用的库

二、阅读文本(让python阅读)

三、分词并设置停用词

四、设置png掩膜

五、字体设置

六、生成词云图

总结

 生成示例

一、引用的库

from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import numpy as np
import jieba.posseg as pseg
from collections import Counter
import PIL.Image as Image
from matplotlib import colors

确保已安装以上的库,不然运行会报错

#安装库可以用清华的镜像网站(可能会更新,可以上官网查询地址)

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

二、阅读文本(让python阅读)

# 阅读文本(这里yourfile.txt,根据文本所在具体位置进行设置)
text = open("yourfile.txt", encoding="utf-8").read()  
words = pseg.cut(text)

这里"yourfile.txt",根据文本所在具体位置进行设置

三、分词并设置停用词

# 按指定长度和词性提取词
report_words = []
for word, flag in words:
    if (len(word) >= 2) and ('n' in flag): #这里设置统计的字数
        report_words.append(word)

# 设置停用词
stopwords = set(STOPWORDS)
stopwords.update(["的", "感谢", "我代表", "以上", "报告", "表示诚挚感谢","战略"])

# 去除停用词
report_words = [word for word in report_words if word not in stopwords]

# 统计高频词汇
result = Counter(report_words).most_common(200) #词的个数

# 建立词汇字典
content = dict(result)
#输出词频统计结果
for i in range(50):
    word,flag=result[i]
    print("{0:<10}{1:>5}".format(word,flag))

len(word)设置的是词长,想要提取两个两个字的就设置2,三个三个字的就设置3(以此类推)

result = Counter(report_words).most_common(200)  这里的200是指统计200个词用于绘制,可以根据需求设置

四、设置png掩膜

#设置png掩膜(yourfile.png根据实际路径进行替换)
background = Image.open("yourfile.png")
mask = np.array(background)

yourfile.png根据实际路径进行替换

如果输出结构还是长方形(正方形),应该是png图片“有问题”,可以尝试以下的处理

1.用p图软件把图片改成纯黑色(可能别的也可以,我没试过)

2.用以下代码把白色背景改为透明

# 如果当前位深是32的话,可以不用写转RGBA模式的这一句,但是写上也没啥问题
# 从RGB(24位)模式转成RGBA(32位)模式
img = Image.open("yourfile.png").convert('RGBA')
W, L = img.size
white_pixel = (0, 0, 0, 0)  # 白色
for h in range(W):
    for i in range(L):
        if img.getpixel((h, i)) == white_pixel:
            img.putpixel((h, i), (255, 255, 255, 0))  # 设置透明
img.save("yourfile_new.png")  # 自己设置保存地址

这里有两个参数需要修改

yourfile.png根据实际路径进行替换,yourfile_new.png(这是修改后图片)根据实际路径进行替换

五、字体设置

# 设置字体样式路径
font_path = r"C:\Windows\Fonts\STLITI.TTF"

# 设置字体大小
max_font_size =200
min_font_size =10

# 建立颜色数组,可更改颜色
color_list = ['#FF274B']
# 调用颜色数组
colormap = colors.ListedColormap(color_list)

字体样式:一般都在这个路径,可以自己根据需求修改或者下载想要的字体

字体大小:最大和最小根据需求更改

字体颜色:可以不要这行代码(默认设置),也可以根据需求设置一种或多种颜色(我这里只设置了一种)

六、生成词云图

# 生成词云
wordcloud = WordCloud(scale=4,                         #输出清晰度
                      font_path=font_path,             #输出路径
                      colormap=colormap,               #字体颜色
                      width=1600,                      #输出图片宽度
                      height=900,                      #输出图片高度
                      background_color='white',        #图片背景颜色
                      stopwords=stopwords,             #停用词
                      mask=mask,                       #掩膜
                      max_font_size=max_font_size,     #最大字体大小
                      min_font_size=min_font_size)     #最小字体大小
wordcloud.generate_from_frequencies(content)

# 使用 matplotlib 显示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存词云图
wordcloud.to_file("wordcloud.png")

如果前面参数都是按着我的来设置的话,这里直接复制粘贴就好

总结

from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import numpy as np
import jieba.posseg as pseg
from collections import Counter
import PIL.Image as Image
from matplotlib import colors

# 阅读文本(这里yourfile.txt,根据文本所在具体位置进行设置)
text = open("yourfile.txt", encoding="utf-8").read()
words = pseg.cut(text)

# 按指定长度和词性提取词
report_words = []
for word, flag in words:
    if (len(word) >= 2) and ('n' in flag): #这里设置统计的字数
        report_words.append(word)

# 统计高频词汇
result = Counter(report_words).most_common(200) #词的个数

# 建立词汇字典
content = dict(result)
#输出词频统计结果
for i in range(50):
    word,flag=result[i]
    print("{0:<10}{1:>5}".format(word,flag))

# 设置停用词
stopwords = set(STOPWORDS)
stopwords.update(["的", "感谢", "我代表", "以上", "报告", "表示诚挚感谢","战略"])

#设置png掩膜(yourfile.png根据实际路径进行替换)
background = Image.open("yourfile.png").convert('RGB')
mask = np.array(background)
'''
# 如果当前位深是32的话,可以不用写转RGBA模式的这一句,但是写上也没啥问题
# 从RGB(24位)模式转成RGBA(32位)模式
img = Image.open("yourfile.png").convert('RGBA')
W, L = img.size
white_pixel = (0, 0, 0, 0)  # 白色
for h in range(W):
    for i in range(L):
        if img.getpixel((h, i)) == white_pixel:
            img.putpixel((h, i), (255, 255, 255, 0))  # 设置透明
img.save("yourfile_new.png")  # 自己设置保存地址
'''
# 设置字体样式路径
font_path = r"C:\Windows\Fonts\STLITI.TTF"

# 设置字体大小
max_font_size =200
min_font_size =10

# 建立颜色数组,可更改颜色
color_list = ['#FF274B']
# 调用颜色数组
colormap = colors.ListedColormap(color_list)

# 生成词云
wordcloud = WordCloud(scale=4,                         #输出清晰度
                      font_path=font_path,             #输出路径
                      colormap=colormap,               #字体颜色
                      width=1600,                      #输出图片宽度
                      height=900,                      #输出图片高度
                      background_color='white',        #图片背景颜色
                      stopwords=stopwords,             #停用词
                      mask=mask,                       #掩膜
                      max_font_size=max_font_size,     #最大字体大小
                      min_font_size=min_font_size)     #最小字体大小
wordcloud.generate_from_frequencies(content)

# 使用 matplotlib 显示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存词云图
wordcloud.to_file("wordcloud.png")

 生成示例

  • 25
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 好的,下面是使用 Python 绘制词云图的步骤: 1. 安装所需库 使用以下命令安装所需的库: ``` pip install jieba pip install wordcloud pip install imageio ``` 2. 准备文本 将需要绘制词云图的文本保存在一个文本文件中,例如 `text.txt`。 3. 分词 使用 `jieba` 库对文本进行分词,将分好的词保存在列表中: ```python import jieba with open('text.txt', 'r', encoding='utf-8') as f: text = f.read() word_list = jieba.cut(text) ``` 4. 统计词频 使用 `collections` 库中的 `Counter` 函数统计每个词出现的次数: ```python from collections import Counter word_count = Counter(word_list) ``` 5. 生成词云图 使用 `wordcloud` 库生成词云图: ```python from wordcloud import WordCloud import imageio mask = imageio.imread('mask.png') # 词云图形状 wc = WordCloud(font_path='font.ttf', background_color='white', mask=mask) wc.generate_from_frequencies(word_count) wc.to_file('wordcloud.png') # 保存词云图 ``` 其中,`font_path` 参数指定字体文件路径,`background_color` 参数指定背景色,`mask` 参数指定词云图形状。 6. 完整代码 ```python import jieba from collections import Counter from wordcloud import WordCloud import imageio with open('text.txt', 'r', encoding='utf-8') as f: text = f.read() word_list = jieba.cut(text) word_count = Counter(word_list) mask = imageio.imread('mask.png') # 词云图形状 wc = WordCloud(font_path='font.ttf', background_color='white', mask=mask) wc.generate_from_frequencies(word_count) wc.to_file('wordcloud.png') # 保存词云图 ``` 其中,`text.txt` 是文本文件路径,`mask.png` 是词云图形状文件路径,`font.ttf` 是字体文件路径,`wordcloud.png` 是词云图保存路径。 ### 回答2: Python绘制词云图是一种常见的数据可视化方法,适用于对大量文本数据进行分析和展示。下面是用Python绘制词云图的基本步骤: 1. 安装必要的库:需要安装wordcloud库和matplotlib库。可以使用pip命令来进行安装。 2. 准备文本数据:将需要分析的文本数据准备好,可以是一个文本文件或者一个字符串变量。 3. 数据预处理:对文本数据进行预处理,如去除停用词、标点符号、数字等。 4. 创建词云对象:使用wordcloud库创建一个词云对象,并设置其基本参数,比如背景颜色词云形状字体类型等。 5. 生成词云图:调用词云对象的generate方法,将预处理后的文本数据传入,生成词云图。 6. 显示词云图:使用matplotlib库将生成的词云图显示出来。可以通过设置图像大小、颜色等进行美化。 7. 保存词云图(可选):可以将生成的词云图保存成图片文件,使用词云对象的to_file方法。 以上是用Python绘制词云图的基本步骤。通过调整参数和优化预处理过程,可以进一步词云图的效果。词云图能够直观地展示文本数据中出现频率较高的关键词,有助于了解文本内容的重点和热点。在文本分析、舆情监测、信息可视化等领域,词云图都有广泛的应用。 ### 回答3: Python是一种流行的编程语言,可以用来进行各种数据分析和可视化。绘制词云图Python中一项很有趣和有用的任务。 要使用Python绘制词云图,我们需要安装一个包叫做"wordcloud"。可以使用命令`pip install wordcloud`来安装。 在安装完"wordcloud"包之后,我们可以导入它并使用其中的函数来绘制词云图。 首先,我们需要准备一个文本文件,里面包含我们想要制作词云图的文本。可以是一篇文章、一本书或者一些评论数据等。 接下来,我们需要使用Python读取这个文本文件,并进行一些文本处理的步骤,例如去除停用词、分词等。可以使用Python中的自然语言处理库,如NLTK或spaCy。 处理完文本之后,我们可以使用"wordcloud"库中的`WordCloud`类来创建一个词云对象。可以设置词云图的一些属性,例如词云形状字体背景颜色等。 最后,我们只需要调用词云对象的`generate`方法,传入处理后的文本数据,就可以生成词云图了。可以使用`matplotlib`包来显示和保存词云图绘制词云图Python代码如下所示: ```python import matplotlib.pyplot as plt from wordcloud import WordCloud # 读取文本文件 with open("text.txt", "r", encoding="utf-8") as f: text = f.read() # 文本处理步骤... # 创建词云对象 wordcloud = WordCloud(width=800, height=400, background_color="white").generate(text) # 显示词云图 plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") plt.show() # 保存词云图 wordcloud.to_file("wordcloud.png") ``` 以上就是使用Python绘制词云图的简单过程。通过调整词云的属性和文本处理步骤,我们可以得到不同风格和内容的词云图词云图可以帮助我们更好地理解文本的特征和重点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值