python 词云

如果要显示中文,需要另外的字体ttf 文件,并在程序里设好字体文件的路径

(词云默认显示的是英文)
在这里插入图片描述
可以在C–Windows–Fonts里找或自己到网上下载

from wordcloud import WordCloud
def w_cloud(danmu_text):      #词云 出现频率高的字体就大
    with open ('cloud.txt','w+',encoding='utf-8') as f:
        for i in all_danmu_text['内容']:
            f.write(str(i)+' ')
    f.close()
    with open('cloud.txt',encoding='utf-8') as f: #设置字体路径才不会乱码
        danmu_txt=f.read()
    w = WordCloud(font_path="simhei.ttf").generate(danmu_txt)
    plt.imshow(w, interpolation='bilinear')
    plt.axis("off")
    plt.show()
    w.to_file('cloud.png')#wordcloud对象 保存图片

cloud.txt的内容:
在这里插入图片描述

其实就是用空格分割开来的一堆字符串

词云效果:

在这里插入图片描述

<think>好的,用户想用Python生成。我之前看过几个相关的引用资料,需要整理一下步骤。首先,用户可能需要安装必要的,比如wordcloud和jieba。引用1、3、4都提到了wordcloud的使用,而引用2和3提到中文分需要用jieba。所以步骤应该是先安装这些。 接下来,用户需要准备文本数据。引用3和4都提到要读取文件,处理中文的话可能需要用open函数指定编码为utf-8。然后中文分是关键,引用2和3都指出要用jieba分,把文本切分成语,过滤掉停用。停用列表需要用户自己准备,或者使用现有的文件,比如引用3中的例子。 然后统计频,生成字典,这部分引用3提到将列表转为字典格式,因为wordcloud需要这个格式。之后是配置参数,比如背景颜色、尺寸、字体路径(特别是中文字体,否则会乱码),还有遮罩图片的设置,引用3和4都有相关代码示例。 最后是显示和保存图片,使用matplotlib来展示,并保存为文件。可能还需要提醒用户注意字体路径的问题,比如引用3中的font_path='msyh.ttc',用户需要确保字体文件存在。 用户可能遇到的问题包括环境配置,比如安装时的错误,或者中文字体显示方块,这时候需要检查字体路径是否正确。另外,处理中文文本时分不准确,可能需要调整jieba的分模式或添加自定义典。停用过滤不彻底的话,生成的可能会有无关汇,需要完善停用列表。 需要确保示例代码正确,比如读取文件、分、生成各步骤的代码连贯,并且用户能够复制运行。可能还需要提到不同的形状遮罩,如引用3中的mask_array,让用户知道可以自定义形状。 总结步骤应该是:安装→准备文本→中文分→过滤停用→统计频→配置参数→生成并保存。同时提供示例代码,并指出常见问题及解决方法,比如字体设置、分处理等。</think>以下是使用Python生成的完整步骤指南,结合中文处理和可视化优化: ### 一、环境准备 1. 安装必要: ```bash pip install wordcloud jieba matplotlib numpy pillow ``` - `wordcloud`:核心生成 - `jieba`:中文分工具[^2] - `matplotlib`:数据可视化 - `pillow`:图像处理(用于自定义形状) ### 二、基础生成 ```python from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba # 读取文本(中文需UTF-8编码) text = open('news.txt', 'r', encoding='utf-8').read() # 中文分处理 words = jieba.lcut(text) filtered_text = ' '.join(words) # 生成 wc = WordCloud( font_path='msyh.ttc', # 指定中文字体 width=1000, height=700, background_color='white', max_words=200 ).generate(filtered_text) # 显示与保存 plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.show() wc.to_file('basic_cloud.png') ``` ### 三、进阶优化技巧 1. **形状自定义**(使用遮罩图片)[^3] ```python from PIL import Image import numpy as np mask = np.array(Image.open("china_map.png")) # 加载形状模板 wc = WordCloud(mask=mask, contour_width=2, contour_color='steelblue') ``` 2. **停用过滤** ```python stopwords = set(open('stopwords.txt', encoding='utf-8').read().split()) wc = WordCloud(stopwords=stopwords) # 过滤无意义汇 ``` 3. **颜色方案优化** ```python from wordcloud import ImageColorGenerator image_colors = ImageColorGenerator(mask) # 根据遮罩图片配色 wc.recolor(color_func=image_colors) ``` ### 四、完整案例演示 ```python import jieba import numpy as np from PIL import Image from wordcloud import WordCloud, ImageColorGenerator # 1. 数据准备 text = open('article.txt', 'r', encoding='utf-8').read() stopwords = set(open('chinese_stopwords.txt', encoding='utf-8').read().split()) # 2. 中文分处理 words = [word for word in jieba.cut(text) if word not in stopwords and len(word) > 1] # 3. 加载形状模板 mask_img = np.array(Image.open('heart_shape.png')) # 4. 生成 wc = WordCloud( font_path='msyh.ttc', mask=mask_img, background_color='white', max_words=300, colormap='viridis', contour_width=1 ).generate(' '.join(words)) # 5. 应用模板配色 wc.recolor(color_func=ImageColorGenerator(mask_img)) # 6. 输出结果 plt.figure(figsize=(12,8)) plt.imshow(wc, interpolation='bilinear') plt.axis('off') wc.to_file('advanced_cloud.png') plt.show() ``` ### 五、常见问题解决 1. **中文显示为方框** - 确认指定了正确的中文字体路径 - 检查字体文件是否实际存在 - 尝试使用`.ttc`字体文件(如`simhei.ttc`) 2. **频统计不准确** - 扩展停用表(可参考百度停用表) - 使用`jieba.add_word()`添加专业汇 - 调整分模式:`jieba.cut(text, cut_all=False)` 3. **性能优化** - 对于大文本文件(>10MB),建议先进行数据清洗 - 使用`jieba.enable_parallel()`开启并行分 - 降低`max_words`参数值(通常200-500足够)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值