我试了一下可以实现。将图片转换成一堆词语组成的图
图片的背景必须是纯白的或者透明
#可实现的代码
#生成词云图代码,图片背景必须为纯白色或透明色
import wordcloud
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
def show(obj):
img = Image.open(r"D:\Users\DUANPT\Desktop\k.jpg")
bg=np.array(img)
wc=wordcloud.WordCloud(
'C:\Windows\Fonts\STHUPO.TTF',#字体,可自行去文件夹找字体
width=500,
height=300,
background_color='white',
mask=bg,#把cxk图片作为遮罩
# random_state=35 #修该横竖单词比例
)
t=wc.generate(obj)
t.to_file(r"D:\Users\DUANPT\Desktop\d2.png")
# t.to_image().save('d:/xxx.png') #把词云可视化图输出到D盘
plt.imshow(t)
plt.axis('off') #开或关,坐标轴(x轴,y轴) ,off表示关,on表示开
plt.show()
f=open(r"D:\Users\DUANPT\Desktop\panting.txt").read()
show(f)
import sys
import importlib#python3
importlib.reload(sys)
import jieba.analyse
from os import path
from scipy.misc import imread
import matplotlib as mpl
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
if __name__ == "__main__":
mpl.rcParams['font.sans-serif'] = ['FangSong']
#mpl.rcParams['axes.unicode_minus'] = False
content = open(r"D:\Users\DUANPT\Desktop\111.txt","rb").read()
# tags extraction based on TF-IDF algorithm
tags = jieba.analyse.extract_tags(content, topK=100, withWeight=False)
#topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
#withWeight 为是否一并返回关键词权重值,默认值为 False
text =" ".join(tags)
text = str(text)
# read the mask
d = path.dirname(r"D:\Users\DUANPT\Desktop\k.jpg")
trump_coloring = imread(path.join(d, "k.jpg"))
wc = WordCloud(font_path='C:\Windows\Fonts\STHUPO.TTF',
background_color="white", max_words=300, mask=trump_coloring,
max_font_size=40, random_state=42)
# 修该横竖单词比例
#max_words=300词云显示的最大单词数
# generate word cloud 生成词云
t = wc.generate(text)
# generate color from image
image_colors = ImageColorGenerator(trump_coloring)#给生成的词云图上色
t.to_file(r"D:\Users\DUANPT\Desktop\hi.png")#将图片保存到路径
plt.imshow(t)
plt.axis("off")##去掉坐标轴
plt.show()
统计词频:
import jieba
import pandas as pd
file_context=open(r"D:\Users\DUANPT\Desktop\111.txt").read()
words1=jieba.lcut(file_context)#全模式
words2=jieba.lcut_for_search(file_context)#搜索引擎模式
#统计词频
data1={}
for chara in words1:
if len(chara)<2:
continue
if chara in data1:
data1[chara]+=1
else:
data1[chara]=1
data1=sorted(data1.items(),key = lambda x:x[1],reverse = True) #排序
data2={}
for chara in words2:
if len(chara)<2:
continue
if chara in data2:
data2[chara]+=1
else:
data2[chara]=1
data2=sorted(data2.items(),key = lambda x:x[1],reverse = True) #排序
这篇博客介绍了如何使用Python3生成词云图,强调图片背景需为纯白或透明,首先进行词频统计。
3141

被折叠的 条评论
为什么被折叠?



