【 数据可视化——词云图绘制 】四步搞定从图片提取颜色的词云图绘制 基于Python

相信大家经常看到一些非常炫酷的词云图,就是用大小不一的词语来组成一个图像。

     网络上有为词云图进行定义:词云图由词汇组成类似云的彩色图形,用于展示大量文本数据。例如,制作用户画像,对用户进行聚类,实现精细化营销。

而用python,如何进行词云图的绘制呢,接下来我将附上我今年参加比赛进行人物画像分析部分的词云图,及其相关代码,一起来看一看吧!

本文使用了一些比较高级的方法,不再是普通的绘制词云图,而是使用图片遮罩,即从右边的图片里提取颜色,在相应的位置作出词云图,如左图所示

第一步:程序包安装

#安装需要使用的相关的包
from PIL import Image
import numpy as np

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

第二步:文本设定

        接下来,我们将准备好文本,读入系统,随后你就可以看到你的文本会被系统自动分割成词语

filename = "04.txt"#将文本命名
with open(filename) as f:
    mytext4= f.read()

mytext4

 第三步:词云图参数设定

       在上述代码中,我们安装了ImageColorGenerator,它是一个提取图片色彩的作用,这可以帮助我们创建与图像颜色匹配的词云图,也就是说,使用我们自己上传的彩色图像作为蒙版,将其颜色作为彩色映射,下面的代码就是进行这个操作

character_mask = np.array(Image.open('222.jpeg'))
image_colors = ImageColorGenerator(character_mask)

        既然之前的源文本和色彩遮罩都已经设置好了,那么接下来就要对绘制的内容进行设置啦。下述代码是利用WordCloud对我们的词云图进行参数设置,具体对应内容如下:

background_color:背景颜色

font_path:字体(大家一定要根据自己电脑的系统设置格式,macOS和windows或许有不同)

relative_scaling:和字体大小的关联性

prefer_horizontal:表示在水平如果不合适,就旋转为垂直方向,该值越大,表示水平的词语越多

mask=character_mask:我们一开始设置的颜色遮罩

generate(mytext4):我们选定的绘制词云图的文本

        其他参数大家根据英文名称也可以大致看出来,建议大家可以更具需求,多修改修改参数数值试一试,会有不同的发现,也可以更好的理解这些参数的意义,绘制出最合适的词云图

wordcloud = WordCloud(background_color='white',font_path='PingFang.ttc', height=400,
                      width=800,scale=20,prefer_horizontal=0.9999,max_words=800,max_font_size=80,min_font_size=4,relative_scaling=0.3,
                      mask=character_mask
                    ).generate(mytext4)

第四步:绘制与保存:

plt.figure(figsize=[12, 10])
plt.imshow(wordcloud.recolor(color_func= image_colors), alpha=1)
plt.axis('off')

plt.savefig('图20.jpg', dpi=600, bbox_inches='tight', quality=95)
plt.show()

        使用matplotlib.pyplot即可绘制出词云图,并将其保存在指定的位置里,命名为'图20.jpg',最后plt.show()就可以显示该词云图啦

        当然如果大家觉得画出来的图有点单调,只能看出一个人形的话,我当时的操作是,和原图进行一个叠底,效果如下:

        当然,这是我当时论文的需求,所以我这样操作了一下,感觉图片会更好看,最终做成什么效果还是看大家的需要。这篇文章就到这里啦,感谢您的阅读!

文中图片来源:XUEFEI(公众号、小红书)

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值