wordcloud制作中文词云图(官方文档参数翻译)

本文介绍了使用WordCloud库生成中文词云图的方法,包括安装、配置参数、使用jieba进行分词等步骤,并提供了完整的代码示例。

其实早在半年前就使用了这个库,当时由于太忙,没有时间记录,最近比较闲,因此写篇笔记总结一下该库的基本用法。更详细的介绍和例子参见其官网Wordcloud

1.安装

pip install wordcloud

2.使用

构造wordcloud类

from wordcloud import WordCloud

wc = WordCloud(参数)

#参数
# font_path:字体文件(OTF或TTF)的路径,字符串

# width:绘图区宽度,默认400,整型

# height:绘图区高度,默认200,整型

# prefer_horizontal:单词倾向于水平放置还是垂直放置,如果值小于1,则会在不合适的情况下旋转单词,浮点型,默认0.9

# mask:是否在给定的形状内绘制单词,这个参数使我们能够根据给定的轮廓形状绘制各种词云图,当此参数不为None时,width和height将被忽略,nd-array型或None,默认None

# scale:计算过程和实际绘图的比例,浮点型,默认1

# min_font_size:绘图时最小的字体大小,整型,默认4

# font_step:字体大小的迭代步长,大于1时可能会出现错误排列,整型,默认1

# max_words:绘图使用的最大单词数,整型,默认200

# stopwords:排除的单词集,字符串集或None,默认为None时,内置的字符串集将会被使用

# background_color:背景颜色,颜色值,默认为'black'

# max_font_size:绘图时最大字体大小,整型或None,默认为None

# mode:模式,默认为'RGB',当为'RGBA'时,倘若背景颜色为None,则会得到透明的背景

# relative_scaling:单词出现频率对其字体大小的权重,值为0时,只考虑单词排名对字体大小的影响,值为1时,具有2倍出现频率的单词具有2倍的字体大小,一般值设置为0.5最棒,浮点型

# color_func:颜色函数,用于生成不同颜色单词的词云图,默认为None

# regexp:正则表达式,用于分词,默认为 r"\w[\w']+" 

# collocations:是否包括二元词组,布尔型,默认为True

# colormap:颜色图,随机分配颜色给每个单词,如果指定了color_func,则本参数被忽略,字符串或matplotlib colormap型,默认为'viridis'

# normalize_plurals:移除单词末尾的's',布尔型,默认为True

属性

wc.words_
#对应频率的词例,字典类型{字符串:浮点数}

wc.layout_
#记录每个单词的值,字体大小,位置,方向以及颜色,由一系列元组组成的列表,每个元组格式为(string, int, (int, int), int, color)

方法

wc.generate(text)
#从文本中生成词云图

wc.fit_words(frequencies)
#根据给定单词及频率生成词云图
#frequencies:元组型数组,每个元组包含一个单词及其频率

wc.generate_from_frequencies(frequencies, max_font_size=None)
#根据给定单词及频率生成词云图
#frequencies:字典,包含字符串(单词):浮点数(频率)的值对
#max_font_size:最大字体大小

wc.process_text(text)
#将长文本分词,并移除stopwords集合中的单词
#返回字典,dict (string, int)

wc.recolor(random_state=None, color_func=None, colormap=None)
#重新上色
#random_state:随机种子,整型或None

wc.to_array()
#以numpy矩阵的格式返回词云图

to_file(filename)
#以图片的格式返回词云图
#filename:保存路径

根据给定图片的颜色生成颜色函数

from wordcloud import ImageColorGenerator
pic_color=ImageColorGenerator(pic)

生成随机颜色(默认的颜色生成方式)

wc.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None)
#random_state:如果给定一个随机的对象,会用作它生成随机种子的数字

3.例子(jieba分词制作中文词云图)

制作中文词云图时需要jieba库分词(导入前需安装)

# -*- coding:utf-8 -*-
from os import path
import matplotlib.pyplot as plt  #绘制图片
from scipy.misc import imread   #读取图片
from wordcloud import WordCloud,ImageColorGenerator
import jieba  #结巴分词
text_address=path.abspath('test1.txt')
text=open(text_address).read()   #读取文本
text_cut=jieba.cut(text)   #分词
new_textlist=' '.join(text_cut)   #组合
pic_address=path.abspath('pic1.jpg')  
pic=imread(pic_address)  #读取图片
pic_color=ImageColorGenerator(pic)   #根据图片生成颜色函数
wc=WordCloud(background_color='white',    #构造wordcloud类
mask=pic,
max_font_size=40,
random_state=30,
font_path="font.ttf",
max_words=500,
min_font_size=2,
color_func=pic_color)
wc.generate(new_textlist)    #生成词云图
plt.figure()    #画图
plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file(path.join(path.dirname('test.txt'),"zjw5.png"))   #保存图片

这里写图片描述

这里写图片描述


如果觉得这篇文章帮助了您,请打赏一个小红包鼓励作者继续创作哦!!!

在这里插入图片描述

<think>好的,用户想知道如何用wordcloud库画出不同形状的词云图。我之前对wordcloud库有一些了解,但需要详细整理步骤。首先,用户可能已经知道基本的词云生成方法,但现在需要改变形状,这可能涉及到使用遮罩图像。 我应该先确认wordcloud库是否支持形状设置。是的,wordcloudWordCloud类有一个mask参数,可以接受一个ndarray类型的图像数据。接下来,用户需要准备一个遮罩图像,通常是黑白分明的图片,白色部分会被视为透明,黑色部分作为形状区域。 然后,需要安装必要的库,除了wordcloud,可能还需要Pillow来处理图像,以及numpy。用户可能需要用PIL.Image打开图片,并用numpy转换为数组。需要注意的是,遮罩图像的处理,确保背景是白色,而形状区域是黑色,或者相反?可能需要查阅wordcloud的文档确认。根据经验,遮罩图像中的白色部分会被忽略,词云只在非白色区域显示,所以用户应该使用白色背景,形状为其他颜色,比如黑色。 然后,生成词云时,将mask参数设置为处理后的数组。同时,可能需要调整轮廓颜色和宽度,这可以通过contour_color和contour_width参数设置。此外,颜色方案可能也需要调整以适应形状,比如使用colormap参数。 用户可能遇到的问题包括遮罩图像不合适,比如对比度不够,导致形状不明显。这时候需要提醒用户选择轮廓清晰的图片,或者用图像处理软件预处理。另外,路径问题可能导致图片加载失败,需要确认路径正确。 最后,给出一个完整的示例代码,从导入库、读取文本、处理遮罩、生成词云到保存结果。还要提到参数调整,比如max_words、background_color等,以及可能的错误处理,比如图片模式需要转换为RGB,或者使用scipy.misc的替代方案,因为现在的版本可能有所不同,推荐使用PIL和numpy的组合。 另外,可能需要提醒用户,如果生成的形状边缘有锯齿,可以尝试更高分辨率的遮罩图片。还有,如果词云没有完全填充形状,可能需要调整缩放参数scale,或者增加词语数量。 总结步骤:安装库、准备遮罩图、加载文本、生成mask数组、配置WordCloud参数、生成词云、输出或显示图像。确保代码示例正确,并解释每个步骤的作用,帮助用户理解。</think>以下是用wordcloud库绘制自定义形状词云图的详细步骤: 1. 环境准备 ```python pip install wordcloud numpy pillow matplotlib ``` 2. 核心实现步骤 ```python from wordcloud import WordCloud, STOPWORDS import numpy as np from PIL import Image # 用于加载形状模板 import matplotlib.pyplot as plt # 步骤1:准备文本数据 text = """在这里粘贴你的文本内容,或者用open()读取文件""" # 步骤2:加载形状模板(PNG格式最佳) mask_image = np.array(Image.open("你的形状模板.png")) # 例:心形、地图、logo等 # 步骤3:配置词云参数 wc = WordCloud( background_color="white", # 背景色 mask=mask_image, # 形状控制 max_words=200, # 最大词数 contour_width=3, # 轮廓线宽度 contour_color='steelblue', # 轮廓线颜色 colormap='viridis' # 颜色主题 ) # 步骤4:生成词云 wc.generate(text) # 步骤5:显示/保存结果 plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.show() wc.to_file("output_shape.png") # 保存为文件 ``` 3. 形状模板制作要点 - 推荐使用黑底白字的二值化图像 - 建议分辨率800x600以上 - 推荐使用PNG格式保持透明度 - 可以使用Photoshop/GIMP等工具制作 4. 常见问题解决 - 形状不生效 → 检查模板是否为黑白对比明显的二值图 - 中文乱码 → 添加字体路径参数 `font_path="msyh.ttc"` - 词语分布不均 → 调整`scale`参数(推荐1.5-3之间) - 边缘锯齿 → 使用更高分辨率的模板 5. 高级技巧 ```python # 添加自定义颜色函数 def color_func(word, font_size, position, orientation, random_state=None, **kwargs): return "hsl({}, 80%, 50%)".format(np.random.randint(0, 360)) wc.recolor(color_func=color_func) # 添加渐变色 wc = WordCloud(colormap='RdYlGn') # 红黄绿渐变 ``` 效果示意图: ``` [此处应为心形词云图示例,但因文本格式限制无法显示] ``` 完整案例流程: 1. 准备一个白色背景的熊猫形状PNG图片 2. 使用中文古诗文本作为输入 3. 设置字体参数中文黑体 4. 生成具有绿色渐变的熊猫形状词云 最终会得到一个按照熊猫轮廓排列,带有绿色渐变的古诗词词云图
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值