使用WordCloud中遇到的问题

前言

今天帮一个妹妹用python绘制词云图的时候遇到了点麻烦,主要是这部分代码之前学过,好久不用了需要现学现卖,过程中遇到的问题记录如下。

源码和结果

首先给出整个源码

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

word_dict = {
    '价值易变性': 100,
    '确权难': 80,
    '共享性': 75,
    '可交易性': 75,
    '1+1>2': 65,
    '成本递减': 65,
    '经济价值性': 50,
    '可计量': 50,
    '合法性': 50,
    '安全成本高': 50,
    '时效性': 50
}

mask_img = np.array(Image.open("cloud2.jpg"))

# mask = np.array(Image.open('aaa(1).png'))
# image_colors = ImageColorGenerator(mask) # 从图片提取色

wordcloud = WordCloud(
    font_path='simsun.ttc',  # 设置字体
    max_words=1000,  # 词云显示的最大词数
    mask=mask_img,  # 设置背景图片
    background_color='white',  # 背景颜色
    # color_func=image_colors,
    colormap='seismic'
    # color_func=lambda *args, **kwargs: "rgb(176, 56, 56)"
).generate_from_frequencies(word_dict)
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig("./word_cloud.png")
plt.show()

词云图
在这里插入图片描述

问题

1 知道词语和词频怎么绘制

之前只是遇到过给一段文字,然后根据词语的出现次数进行绘制词云图,这里数据变了,我们知道了词汇以及其对应的词频,该如何绘制图像。

WordCloud除了可以接收string之外,还能接收字典类型,所以这里理所当然就应该把数据集设置成字典形式。

word_dict = {
    '价值易变性': 100,
    '确权难': 80,
    '共享性': 75,
    '可交易性': 75,
    '1+1>2': 65,
    '成本递减': 65,
    '经济价值性': 50,
    '可计量': 50,
    '合法性': 50,
    '安全成本高': 50,
    '时效性': 50
}

然后使用WordCloud的时候是要用…generate_from_frequencies(word_dict)而不再用generate()

wordcloud = WordCloud(
    font_path='simsun.ttc',  # 设置字体
    max_words=1000,  # 词云显示的最大词数
    mask=mask_img,  # 设置背景图片
    background_color='white',  # 背景颜色
    colormap='seismic' # 字体颜色
).generate_from_frequencies(word_dict)
2 如何自定义词云形状

首先需要一张你喜欢的形状的图片,然后通过Image的open读取它,接着转换成array的形式,最后在WordCloud的参数列表中设置mask为我们自定义图像即可(见源码)

3 如何自定义图中文字的颜色

一是可以通过WordCloud的参数colormap设置相关的配色,比如

colormap='seismic'

二是可以通过参数color_func自己写一个匿名函数返回一个指定rgb颜色,比如

color_func=lambda *args, **kwargs: "rgb(176, 56, 56)"

三是我们可以自己找一张带有各种配色的图片,然后通过ImageColorGenerator提取其中的配色,图片例如
在这里插入图片描述
然后使用参数color_func接收,代码如下,使用ImageColorGenerator之前需要导库

# img = np.array(Image.open('aaa(1).png'))
# image_colors = ImageColorGenerator(img) # 从图片提取色
color_func=image_colors
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值