利用Python生成词云是将数据可视化的一种方法,需要用到wordcloud、matplotlib 两个模块,如果这两个模块还没有安装,先用pip将两个模块安装好:
pip install wordcloud
pip install matplotlib
下面开始完成代码部分:
import matplotlib.pyplot as plt
import wordcloud
# 这里需要数据可视化是一本英文txt小说,利用文件读取的方式将小说的内容读出来,然后绘制词云。
file = open('/home/jcglqmoyx/Desktop/Jane Eyre.txt', 'r')
txt = file.read()
def generate_wordcloud():
w = wordcloud.WordCloud(
background_color='black',
mask=plt.imread('/home/jcglqmoyx/Desktop/background_image.jpg'), # 背景图所在文件路径
height=2000, # 所要生成词云图片的尺寸
width=2400,
)
w.generate(txt)
w.to_file("/home/jcglqmoyx/Desktop/wordcloud.png") # 生成词云图片
generate_wordcloud()
这里需要注意的是,上面的代码所分析的文件是一个英文txt文档,但其实只分析一句话或者几个单词也可以,只要保证词与词之间有空格即可。
import matplotlib.pyplot as plt
import wordcloud
txt = 'hello world, this is a demo snippet'
def generate_wordcloud():
w = wordcloud.WordCloud(
background_color='black',
mask=plt.imread('/home/jcglqmoyx/Desktop/background_image.jpg'), # 背景图所在文件路径
height=2000, # 所要生成词云图片的尺寸
width=2400,
)
w.generate(txt)
w.to_file("/home/jcglqmoyx/Desktop/wordcloud.png") # 生成词云图片
generate_wordcloud()
如果所分析的内容存储在一个中文txt文件中,则需要多几个步骤:
import jieba
import matplotlib.pyplot as plt
import wordcloud
def generate_wordcloud():
# 设置编码方式为UTF-8
file = open('/home/jcglqmoyx/Desktop/visualize_novel.py', 'r', encoding='utf8')
txt = file.read()
file.close()
# 使用jieba模块进行分词, 如果没有安装jieba模块,需要用 pip intall jieba 进行安装
seg_list = jieba.cut(txt, use_paddle=True)
txt = ' '.join(list(seg_list))
print("Paddle Mode: " + '/'.join(list(seg_list)))
w = wordcloud.WordCloud(
background_color='black', # 生成图片的背景颜色
mask=plt.imread('/home/jcglqmoyx/Desktop/backgroud_image.jpg'),
# 所需要的中文字体,可以在Windows系统存储字体文件的路径下找到,可以参考这篇文章找到中文字体:https://jingyan.baidu.com/article/a3f121e4a69c67fc9052bb07.html
font_path='/home/jcglqmoyx/Downloads/微软雅黑.ttf',
height=2000,
width=2400,
)
w.generate(txt)
w.to_file("/home/jcglqmoyx/Desktop/wordcloud.png")
generate_wordcloud()
这里是使用Python生成词云图片的一些效果:英文名著图鉴。