Python词云生成(词云清晰度)

import sys, jieba
import jieba.posseg as psg
from collections import Counter
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

# 第一次分好词后以下内容注释,节省时间
# with open('/Users/guoguojia/Desktop/dmbj.txt', 'r') as f:
#     dm_txt = f.read()
#
# dm_words_with_attr = []               # 南派三叔	nr
# for x in psg.cut(dm_txt):             # psg.cut  jieba的分词
#     if len(x.word) > 2:
#         dm_words_with_attr.append((x.word, x.flag))
#
# print(len(dm_words_with_attr))
# with open('/Users/guoguojia/Desktop/dm_out.txt', 'w+') as f:
#     for x in dm_words_with_attr:
#         f.write(f'{x[0]}\t{x[1]}\n')

dm_words_with_attr = []
with open('/Users/guoguojia/Desktop/dm_out.txt', 'r') as f:
    for x in f.readlines():
        pair = x.split()
        if len(pair) < 2:
            continue
        dm_words_with_attr.append((pair[0], pair[1]))

attr_dict = {}
for x in dm_words_with_attr:
    attr_dict[x[0]] = x[1]

# 过滤的参数
stop_attr = ['eng', 'm', 'v', 'r', 'l', 'rr', 'c', 'n', 'd', 'i', 't', ]

words = [x[0] for x in dm_words_with_attr if x[1] not in stop_attr]

# 实现提取前Top n 功能
c = Counter(words).most_common(500)
print(c)
# with open('/Users/guoguojia/Desktop/most.txt', 'w+') as f:
#     for x in c:
#         f.write(f'{x[0]}\n')

attr_dict = {}
for i, j in c:
    attr_dict[i] = j

# 词云背景图片
img = np.array(Image.open('/Users/guoguojia/Desktop/12.jpg'))


wc = WordCloud(
    background_color="white", #背景颜色
    mask=img,
    max_words=500, #显示最大词数
    font_path="/System/Library/Fonts/Supplemental/Arial Unicode.ttf",  #使用字体
    min_font_size=10,
    max_font_size=50,
    scale=2,        # 比列放大  数值越大  词云越清晰
    # width=1680,  #图幅宽度
    # height=1050,
    random_state=50,
    relative_scaling=False,
    ).generate_from_frequencies(attr_dict)


# 绘制文字的颜色以背景图颜色为参考
image_color = ImageColorGenerator(img)
# 好像是结合原图色彩啥的  忘记了。。。。
wc.recolor(color_func=image_color)
plt.figure()        # 创建图像
plt.imshow(wc, interpolation="bilinear")
# 关闭坐标轴
plt.axis("off")
plt.show()
# 保存图片
wc.to_file('/Users/guoguojia/Desktop/14.jpg')

scale=2, 按原图比列放大,数值越大 图像越清晰,在保存的时候才能看到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值