python通过wordcloud绘制词云

python3下绘制定制化词云,预先安装wordcloud,准备任意一张图片eg.jpg,以及一个写有文案的txt文件。

code如下:

#!/user/bin/python
# -*- coding:utf-8 -*-
_author_ = 'xisuo'

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


def create_wordcloud(docs=None,imgs=None,filename=None):
    '''
    :param docs:读入词汇txt,尽量不重复
    :param imgs: 读入想要生成的图形,网上随便找
    :param filename: 保存图片文件名
    :return:
    '''
    # Read the whole text.
    current_file = os.getcwd()
    text = open(os.path.join(current_file, docs)).read()
    alice_mask = np.array(Image.open(os.path.join(current_file, imgs)))
    font_path = 'Arial Unicode MS.ttf'
    plt.rcParams['font.family'] = ['Arial Unicode MS']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    wc = WordCloud(background_color="white",
                   max_words=2000,
                   font_path=font_path,  # 设置字体格式,如不设置显示不了中文
                   mask=alice_mask,
                   stopwords=STOPWORDS.add("said")
                   )
    # generate word cloud
    wc.generate(text)
    # store to file
    if filename is None:filename="词云结果.png"
    wc.to_file(os.path.join(current_file, filename))

docs='demo.txt'    #读入的文本
imgs="eg.png"     #需要绘制的图像
filename='词云结果.png'     #保存图片文件名
create_wordcloud(docs=docs,imgs=imgs,filename=filename)
print('create wordcloud successful')

常见问题

在linux/MAC环境下,中文字体可能会乱码,原因是缺少中文字体或字体集不对,需要重新制定

> fc-list :lang=zh
> # 可能会出现-bash: fc-list: command not found错误
> # 需要预装fontconfig
> $ sudo apt-get install fontconfig
> fc-list :lang=zh
[output] Arial Unicode MS.ttf
> # 此时,调整.py脚本中的font_path = 'Arial Unicode MS.ttf'内容即可

demo.txt内容

ALPINA B4,DS 4S,DS 5,DS 5LS,DS 6,DS 7,SAVANA,YUKON,
大切诺基,大指挥官,指南者,指挥官,牧马人,自由侠,自由光,MINI,
MINI CLUBMAN,MINI COUNTRYMAN,鑫源X30LEV,
SWM斯威G01,SWM斯威X3,SWM斯威X7,WEY P8,WEY VV5,
WEY VV6,WEY VV7,nan,smart forfour,smart fortwo,佳宝V80,
佳宝V80新能源,夏利,夏利N5,夏利N7,威志V5,森雅R7,森雅R9,
骏派A50,骏派A70,骏派A70E,骏派CX65,骏派D60,骏派D80,
劲炫ASX,君阁,奕歌,帕杰罗·劲畅,欧蓝德,翼神,蓝瑟,上汽大通D90,
上汽大通G10,上汽大通G20,上汽大通G50,V3菱悦,V6菱仕,
东南A5翼舞,东南DX3,东南DX7,俊风,俊风E11K,俊风E17,
俊风ER30,帅客,御风,东风小康C35,东风小康K01,东风风光,
东风风光580,东风风度MX5,东风风度MX6,东风A9,东风风神A30,
东风风神A60,东风风神AX3,东风风神AX4,东风风神AX5,
东风风神AX7,东风风神H30,东风风神L60,景逸,景逸S50,
景逸X3,景逸X5,景逸X6,菱智,菱智M5EV,风行CM7,风行F600

eg.jpg链接:

eg.jpg

结果如下:

res_eg.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑小柒是西索啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值