中文词云图
#-*-coding:utf-8-*-
import jieba
import numpy as np
import PIL.Image as Image
from wordcloud import WordCloud
def check_charset(file_path):
import chardet
with open(file_path, "rb") as f:
data = f.read(4)
charset = chardet.detect(data)['encoding']
# 读取txt文件
word = open(r"D:/Users.../download_CNKI.txt", "rb").read()
# 分隔txt文字
word_cut = jieba.cut(word)
# 用空格连接
word_space = ' '.join(word_cut)
print(word_space)
# 读取图片文件,生成数组
pic = np.array(Image.open(r"D:/Users/.../lizi.png"))
word = WordCloud(
font_path='STXINGKA.TTF', # 设置字体,本机的字体
mask=pic, # 设置背景图片
background_color='FloralWhite', # 设置背景颜色
max_font_size=180, # 字体最大值
max_words=1000, # 设置最多字数
stopwords={'的'} # 设置停用词,不出现
).generate(word_space)
image = word.to_image()
image.show() # 显示图片
# word.to_file('result.png') # 保存图片
*代码读取的是从CNKI里以“霍夫斯泰德文化维度”为关键字的txt文本
*背景颜色可以查颜色表自定(这里我用的FloralWhite,感觉是一种淡淡的橘色)
*中文版font_path参数一定要设定。设定的方式要先打开我的电脑里的控制面板,再点击字体选项,就可以看见各种电脑里包含的字体类型,点击属性就能知道想选字体的参数名字。
*词云图形状背景通过以下代码导入
pic = np.array(Image.open(r"..."))
效果图如下:
英文词云图(要简单一些)
#导入词云的包
from wordcloud import WordCloud
#导入matplotlib作图的包
import matplotlib.pyplot as plt
f = open(r"D:/Users/.../down_savedrecs.txt",'r',encoding='utf-8').read()
#生成一个词云对象
wordcloud = WordCloud(
background_color="FloralWhite"
width=1500, #设置图片的宽度
height=960, #设置图片的高度
margin=10 #设置图片的边缘
).generate(f)
# 绘制图片
plt.imshow(wordcloud)
# 消除坐标轴
plt.axis("off")
# 展示图片
plt.show()
*读取WOS数据
*没有设定mask,大家可以自己设定
效果图: