如何用Python生成含指定重复词的词云(禁用频率合并)
Python实现按原列表重复次数精确显示的词云
要实现让词云精确匹配原列表中每个单词的重复次数(不合并重复项,每个出现的单词都独立显示),可以通过给重复单词添加唯一标识绕过字典键唯一的限制,生成词云后再还原原单词,具体步骤如下:
实现代码
from wordcloud import WordCloud import matplotlib.pyplot as plt import random # 模拟原始重复单词列表(替换成你的实际列表即可) letters = [chr(ord('A') + i) for i in range(26)] rand_let = random.choices(letters, k=70) # 构建带唯一索引的权重字典:每个条目权重为1,确保每个单词实例都被单独处理 weight_map = {} for idx, word in enumerate(rand_let): weight_map[f"{word}_{idx}"] = 1 # 初始化词云参数,和你的R代码参数对应 wc = WordCloud( scale=3, max_words=100, random_order=True, color_func=lambda *args, **kwargs: random.choice(['grey50', 'blue', 'red']) ) # 从权重字典生成词云 wc.generate_from_frequencies(weight_map) # 还原原单词:去掉唯一索引后缀 wc.words_ = {key.rsplit('_', 1)[0]: val for key, val in wc.words_.items()} # 展示词云 plt.figure(figsize=(10, 6)) plt.imshow(wc, interpolation='bilinear') plt.axis('off') plt.show()
原理说明
- 绕过字典键唯一限制:给原列表中每个单词(包括重复项)添加唯一索引后缀,构建键唯一的权重字典,每个条目权重设为1(确保所有显示的单词大小一致)。
- 还原原单词:词云生成后,修改词云对象的
words_属性,去掉每个键的唯一后缀,让最终显示的文本回到原单词。 - 参数对应R代码:
random_order=True对应随机排列,color_func实现随机颜色选择,scale控制词云缩放比例,和你R代码的效果一致。
内容的提问来源于stack exchange,提问作者kiki
相关产品推荐
相关产品推荐

