利用背景图片生成词云

本文介绍如何从优快云爬取数据并使用Python的jieba和wordcloud库生成词云,包括数据预处理、词云配置及可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要对爬取数据的一些高频词采用词云生成进行可视化展示。

1 爬取csdn的文章 准备txt 和背景图片 建议颜色区分大点 需要的字体

2 安装jieba 和 wordcloud

3 编写代码

from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
import jieba
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np 

#读取txt数据 我就爬了点csdn的内容
text = open('D://ciyun//a.txt','r', encoding='UTF-8').read()
#结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径  
# 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
cut_text = jieba.cut(text)
result = '/'.join(cut_text)
print(result)
#设置停用词
# stopwords = set(STOPWORDS)
# stopwords.add('他们')
# stopwords.add('一个')
#wordcloud = WordCloud(font_path = "C:\Windows\Fonts\STHUPO.ttf",background_color="white",width=1500,height=1000,margin=0).generate(result)
##可以通过font_path路径来设置字体集,background_color 为设置背景颜色,默认设置为黑色,mask设置背景图片
###自定义图片生成词云
image = Image.open(r'D://ciyun//b43.png')  
img = np.array(image) 
#词云的生成,字体的路径一定要写上不然会出现乱码 可以下载其他字体创新
wc = WordCloud(font_path = "C:\Windows\Fonts\STHUPO.ttf",background_color='white',max_font_size=150,mask=img) 
# WordCloud其他参数设置,random_state=42,max_words=2000,min_font_size=20
wc.generate(result)
#绘制文字的颜色以背景图颜色为参考  
image_color = ImageColorGenerator(img)
wc.recolor(color_func=image_color)  
# wc.to_file(r"D://ciyun/wordcloud1.png",dpi=3000)
#图片的展示 
plt.imshow(wc)
plt.axis("off")
# 像素点多少
plt.savefig("D://ciyun/wordcloud3.png",dpi=300)
# plt.show()

结果


<think>我们被要求使用VSCode生成图。根据引用[1],我们可以知道在VSCode中处理文件编码的问题(比如选择GBK编码)。同时,引用[2][3][4]提供了生成图的不同方法,包括使用stylecloud库、pyecharts库以及结合jieba分等方法。综合这些引用,我们可以提供以下步骤:1.确保VSCode正确设置文件编码(特别是处理中文文本时)。2.安装必要的Python库,如:wordcloud,jieba,stylecloud,pyecharts等(根据选择的方法不同而不同)。3.准备文本数据(通常是一个txt文件)。4.编写Python代码,读取文本、分(如果是中文)、生成图并保存。下面我们分别给出两种常见的方法:方法一:使用stylecloud库(简单易用)方法二:使用wordcloud库(更常用,自定义性强)由于引用[2]中提供了stylecloud的示例代码,引用[4]提到了wordcloud,我们将分别展示。注意:在开始之前,请确保已经安装了Python环境,并在VSCode中安装了Python扩展。步骤:1.打开VSCode,新建一个Python文件(例如:ciyun.py)。2.编写代码。方法一:使用stylecloud生成图安装必要的库:pipinstallstylecloudjieba示例代码(参考引用[2]):fromstylecloudimportgen_stylecloudfromjiebaimportcutfilepath='你的文本文件路径.txt'#替换为你的文本文件路径withopen(filepath,'r',encoding='utf-8')asf:txtword=f.read()#使用jieba分word_list=cut(txtword)result="".join(word_list)#分后用空格连接#生成图gen_stylecloud(text=result,size=600,#尺寸font_path='C:/Windows/Fonts/simhei.ttf',#使用中文字体,如黑体background_color='#000000',#背景颜色palette='tableau.BlueRed_12',#调色板gradient='horizontal',#渐变方向,水平或垂直icon_name='fasfa-undo',#图标(需要FontAwesome支持)stopwords=True,#使用内置停用custom_stopwords=[],#自定义停用collocations=False,#避免重复语output_name='ciyun.png'#输出文件名)注意:如果提示缺少FontAwesome,可以下载FontAwesome的字体文件(通常是otf格式)并指定font_path参数到该文件,或者使用其他图标(可参考stylecloud的文档)。方法二:使用wordcloud库安装必要的库:pipinstallwordcloudjiebamatplotlibnumpy示例代码:importjiebafromwordcloudimportWordCloudimportmatplotlib.pyplotasplt#读取文本filepath='你的文本文件路径.txt'withopen(filepath,'r',encoding='utf-8')asf:text=f.read()#分words=jieba.cut(text)result="".join(words)#创建对象wc=WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',#中文字体路径background_color='black',#背景色width=800,#宽度height=600,#高度max_words=200,#最大数max_font_size=100,#最大字体尺寸collocations=False#避免重复)#生成wc.generate(result)#显示plt.imshow(wc)plt.axis('off')#不显示坐标轴plt.show()#保存到文件wc.to_file('ciyun_wordcloud.png')在VSCode中运行代码:右键选择“在终端中运行Python文件”或使用调试运行。注意:如果出现中文乱码问题,请确保:1.文本文件编码正确(如UTF-8),在VSCode中可以通过状态栏的编码指示修改(如引用[1]所述)。2.指定了正确的中文字体路径(如上面的示例使用了黑体)。另外,引用[3]提供了使用pyecharts生成图的方法,但pyecharts生成图通常是交互式的(html格式),如果需要也可以尝试。根据用户需求,我们提供了两种方法。用户可以根据需要选择。生成相关问题:1.如何解决VSCode中Python文件中文乱码问题?2.如何为图添加自定义形状?3.如何调整图以显示更多或更少的语?4.如何为图设置停用列表?5.如何使用pyecharts生成交互式图?</think>### 如何在 VSCode 中生成图教程 在 VSCode 中生成图主要分为以下步骤: --- #### **1. 环境准备** - **安装 Python 扩展**:在 VSCode 扩展商店搜索安装 `Python` 扩展(Microsoft 官方) - **安装必要库**: ```bash pip install jieba # 中文分 pip install wordcloud # 生成核心库 pip install matplotlib # 图像显示 pip install numpy # 数据处理 pip install image # 图像处理(可选) ``` --- #### **2. 准备文本数据** 在 VSCode 中创建文本文件(如 `data.txt`),保存待分析的文本内容。 **编码注意**: 若文件含中文,需确保编码为 **UTF-8**(点击 VSCode 右下角 `UTF-8` → `Reopen with Encoding` → 选择 `UTF-8`)[^1]。 --- #### **3. 编写代码** 新建 Python 文件(如 `wordcloud.py`),复制以下代码: ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt import numpy as np from PIL import Image # 用于自定义形状 # 读取文本(替换为你的文件路径) with open('data.txt', 'r', encoding='utf-8') as f: text = f.read() # 中文分(过滤停用) words = jieba.cut(text) filtered_text = " ".join([word for word in words if len(word) > 1]) # 移除单字 # 设置参数(自定义选项) wc = WordCloud( font_path='C:/Windows/Fonts/simhei.ttf', # 中文字体路径 background_color='white', # 背景色 max_words=200, # 最大数 width=800, height=600, # 尺寸 mask=np.array(Image.open('mask.png')) # 自定义形状(可选) ) # 生成并保存图 wc.generate(filtered_text) wc.to_file('wordcloud_output.png') # 在 VSCode 中显示图像 plt.imshow(wc, interpolation='bilinear') plt.axis('off') # 隐藏坐标轴 plt.show() ``` --- #### **4. 运行与调试** 1. 在 VSCode 中打开终端:`Ctrl + \`` 2. 运行代码: ```bash python wordcloud.py ``` 3. 查看结果: - 生成的图片将保存为 `wordcloud_output.png` - 图像会直接在 VSCode 的 Python 交互窗口中显示 --- #### **5. 常见问题解决** - **中文乱码**:确保指定正确的中文字体路径(如 `simhei.ttf`) - **分不准确**:添加自定义典: ```python jieba.load_userdict('custom_dict.txt') # 每行一个 ``` - **停用过滤**:在分循环中添加停用列表: ```python stopwords = ["的", "和", "是"] # 自定义停用 filtered_text = " ".join([word for word in words if word not in stopwords]) ``` --- #### **6. 高级扩展** - **自定义形状**:准备黑白掩码图(如 `mask.png`),白色区域显示文字 - **颜色方案**:通过 `colormap` 参数调整,例如 `colormap='viridis'` - **交互式**:使用 `pyecharts` 生成 HTML 交互[^3]: ```python from pyecharts.charts import WordCloud wd = WordCloud() wd.add(series_name="", data_pair=word_freq_list, word_size_range=[20, 80]) wd.render("wordcloud.html") # 生成网页 ``` > **提示**:完整代码示例可参考[^2][^3][^4],实际路径需替换为您本地的文件路径。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值