Python实现词云图的3种方式(词频,一段文本,自定义样式)

三种实现词云图的方式

需要用到的第三方库 - matplotlib,jieba,wordcloud

import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud

1.词频统计实现词云图

data={‘a’:20,‘b’:30,‘c’:15,‘d’:22,‘e’:50}
词频统计确保数据是字典格式
如果数据不是字典格式,设法弄成字典格式就好

如果文本是中文的,需要设置字体,不然会乱码

font=r'C:\Windows\Fonts\simfang.ttf'
wc = wordcloud.WordCloud( 
    background_color='white',  # 设置背景色,默认为黑色
    font_path=font,#字体路径设置
    width=500,  # 设置背景宽
    height=350,  # 设置背景高
    max_font_size=50,  # 最大字体
    min_font_size=10,  # 最小字体
    mode='RGBA'  # 当参数为“RGBA”并且background_color不为空时,背景为透明
)

绘图

wc.generate_from_frequencies(data) 
wc.to_file(r"d.png")  # 保存绘制好的词云图

2.一段文字实现词云图

给出一段文本

text='祥子来自农村,是个破产的青年农民,勤劳、纯朴、善良,保留着农村哺育他、教养他的一切,却再也不愿意回农村去了。从农村来到城市的祥子,渴望以' \
     '自己的诚实劳动买一辆属于自己的车。做个独立的劳动者是祥子的志愿、希望、甚至是宗教,凭着勤劳和坚忍,他用三年的时间省吃俭用,终于实现了理想,成为自食其' \
     '力的上等车夫。但刚拉半年,车就在兵荒马乱中被逃兵掳走,祥子失去了洋车,只牵回三匹骆驼。祥子没有灰心,他依然倔强地从头开始,更加克己地拉车攒钱。' \
     '可是,还没有等他再买上车,所有的积蓄又被侦探敲诈、洗劫一空,买车的梦想再次成泡影。'

先使用jieba库进行分词操作,后再画词云图

cut_text=jieba.cut(text)
result=" ".join(cut_text

如果文本是中文的,需要设置字体,不然会乱码

font=r'C:\Windows\Fonts\simfang.ttf'
wc=WordCloud(
    background_color='white',  # 设置背景色,默认为黑色
    font_path=font, #指定文字路径
    width=500,  # 设置背景宽
    height=350,  # 设置背景高
    max_font_size=50,  # 最大字体
    min_font_size=10,  # 最小字体
    mode='RGBA'  # 当参数为“RGBA”并且background_color不为空时,背景为透明
)

绘图

wc.generate(result)  # 根据分词后的文本产生词云
wc.to_file(r"wordcloud.png")  # 保存绘制好的词云图
plt.imshow(wc)  # 以图片的形式显示词云
plt.axis("off")  # 关闭图像坐标系,即不显示坐标系
plt.show()  # plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。其后必须有plt.show()才能显示

3.自定义词云图样式

背景图片需使用透明背景(有条件可以ps抠图

这里另外需要导入的库是numpy,PIL

from PIL import Image
import numpy as np

设置自定义背景

mask = np.array(Image.open("t.png"))

绘图

f = open('data.txt',encoding='utf-8')
txt = f.read()
f.close()

wc=WordCloud(
    background_color="white", \
    width=400, \
    height=300,\
    max_words=200, \
    max_font_size=80, \
    mask=mask, \
    contour_width=3, \
    contour_color='steelblue'
)
wc.generate(txt)  # 根据分词后的文本产生词云
wc.to_file(r"data词云图.png")  # 保存绘制好的词云图
plt.imshow(wc)  # 以图片的形式显示词云
plt.axis("off")  # 关闭图像坐标系,即不显示坐标系
plt.show()  # plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。其后必须有plt.show()才能显示

效果如下:
在这里插入图片描述

  • 9
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 pyecharts 绘制优衣库的,需要安装并导入相应的库。然后,按照以下步骤进行操作: 1. 加载数据集: ```python import pandas as pd uniqlo = pd.read_csv('./data/uniqlo.csv') ``` 2. 数据处理: 根据绘制的需求,对数据进行相应的处理。例如,假设我们要绘制优衣库产品名称的,可以使用以下代码: ```python product_names = uniqlo['product'].tolist() ``` 这将将产品名称转换为列表。 3. 绘制: ```python from pyecharts import options as opts from pyecharts.charts import WordCloud # 创建对象 wordcloud = WordCloud() # 设置表标题和数据 wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="优衣库产品")) wordcloud.add("", [list(z) for z in zip(product_names, [1] * len(product_names))]) # 设置样式 wordcloud.set_series_opts(textstyle_opts=opts.TextStyleOpts(font_size_range=[30, 100])) # 显示表 wordcloud.render() ``` 在上述代码中,我们首先创建了对象,并设置了表的标题。然后,通过 add() 方法添加数据,使用 zip() 函数将产品名称和对应的权重(这里都设置为 1)进行配对。接下来,通过 set_series_opts() 方法设置文本样式,例如字体大小范围。最后,通过调用 render() 方法生成并显示。 请注意,这只是一个基本的示例,你可以根据具体需求对样式、权重设置等进行进一步的配置和调整。另外,你还可以使用 pyecharts 提供的其他表类型和样式选项,根据需要进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值