python词云库wordcloud自定义词云制作步骤分享
目录
- wordcloud库常规方法
- 第三方库
- 读取文件
- 自定义绘制指定形状的词云
wordcloud库常规方法
import wordcloud c=wordcloud.WordCloud() #构建词云对象,配置对象参数 c.generate("wordcloud by python ") #加载词云文本 c.to_file("pywordcloud.png") #输出词云文件
词云生成步骤:
- 分隔:以空格分隔单词
- 统计:单词出现次数并过滤(1-2个字母会被滤掉)
- 字体:根据统计配置字号
- 布局:颜色环境尺寸
c=wordcloud.WordCloud(参数) 配置对象参数
参数(像素) | 描述 |
---|---|
width(默认400px) | c=wordcloud.WordCloud(width=600) |
height(默认200px) | c=wordcloud.WordCloud(height=400) |
min_font_size(默认4号) | c=wordcloud.WordCloud(min_font_size=10) |
max_font_size(根据高度自动调节) | c=wordcloud.WordCloud(max_font_size=20) |
font_step(默认1,步长) | c=wordcloud.WordCloud(font_step=2) |
font_path(默认None,字体路径) | c=wordcloud.WordCloud(font_path="msyh.ttc") |
max_words(默认200,最大数量) | c=wordcloud.WordCloud(max_words=20) |
stop_words(指定去除单词的列表) | c=wordcloud.WordCloud(stop_words={"python"}) |
background_color(默认黑色,词云背景色) | c=wordcloud.WordCloud(background_color="red") |
Scale 默认值1。值越大,图像密度越大越清晰
mask参数自定义词云形状:
#指定词云形状,默认是长方形,需要引用imread()函数 from scipy.misc import imread mk=imread("pic.png") c=wordcloud.WordCloud(mask=mk)
第三方库
- numpy :多维数组运算
- matplotlib :绘图与数据可视化
- pillow :图片处理
- wordcloud :词云制作
- imageio :图像输入输出
- jieba :中文分词
- snownlp :中文情感和自然语言处理
- itchat :微信好友抓取
读取文件
政府工作报告词云:
import wordcloud # 从外部.txt文件中读取大段文本,存入变量txt中 f = open('政府工作报告.txt',encoding='utf-8') txt = f.read() # 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数 w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc') # 将txt变量传入w的generate()方法,给词云输入文字 w.generate(txt) # 将词云图片导出到当前文件夹 w.to_file('Test1.png')
==wordcloud中文分词(适合中文词云)==
# 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 构建并配置词云对象w w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc') # 调用jieba的lcut()方法对原始文本进行中文分词,得到string txt = '由于Python语言的简洁性、易读性以及可扩展性, \ 在国外用Python做科学计算的研究机构日益增多, \ 一些知名大学已经采用Python来教授程序设计课程。 \ 例如卡耐基梅隆大学的编程基础、 \ 麻省理工学院的计算机科学及编程导论就使用Python语言讲授。' txtlist = jieba.lcut(txt) string = " ".join(txtlist) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # w.generate(" ".join(jieba.lcut(txt))) #三段代码合一简写 # 将词云图片导出到当前文件夹 w.to_file('Teste2.png')
自定义绘制指定形状的词云
import jieba import wordcloud from scipy.misc import imread mask=imread("图片形状.png") #导入自定义形状图片赋给mask # 从外部.txt文件中读取大段文本,存入变量txt中 f = open('政府工作报告.txt',encoding='utf-8') txt = f.read() #阅读提取 f.close() #关闭 # 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数 w = wordcloud.WordCloud(width=1000, height=700, background_color='white',mask=mask, font_path='msyh.ttc') # 将txt变量传入w的generate()方法,给词云输入文字 w.generate(" ".join(jieba.lcut(txt))) # 将词云图片导出到当前文件夹 w.to_file('Test1.png')
==勾勒词云轮廓==
# 导入词云制作库wordcloud import wordcloud # 将外部文件包含的文本保存在string变量中 string = open('hamlet.txt').read() # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("ren.png") # 构建词云对象w,注意增加参数contour_width和contour_color设置轮廓宽度和颜色 w = wordcloud.WordCloud(background_color="white", mask=mk, contour_width=1, contour_color='steelblue' ) # # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('p2.png')
==按模板自身颜色绘制词云==
# 导入绘图库matplotlib和词云制作库wordcloud import matplotlib.pyplot as plt from wordcloud import WordCloud,ImageColorGenerator # 将外部文件包含的文本保存在text变量中 text = open('alice.txt').read() # 导入imageio库中的imread函数,并用这个函数读取本地图片queen2.jfif,作为词云形状图片 import imageio mk = imageio.imread("alice.png") # 构建词云对象w wc = WordCloud(background_color="white", mask=mk,) # 将text字符串变量传入w的generate()方法,给词云输入文字 wc.generate(text) # 调用wordcloud库中的ImageColorGenerator()函数,提取模板图片各部分的颜色 image_colors = ImageColorGenerator(mk) # 显示原生词云图、按模板图片颜色的词云图和模板图片,按左、中、右显示 fig, axes = plt.subplots(1, 3) # 最左边的图片显示原生词云图 axes[0].imshow(wc) # 中间的图片显示按模板图片颜色生成的词云图,采用双线性插值的方法显示颜色 axes[1].imshow(wc.recolor(color_func=image_colors), interpolation="bilinear") # 右边的图片显示模板图片 axes[2].imshow(mk, cmap=plt.cm.gray) for ax in axes: ax.set_axis_off() plt.show() # 给词云对象按模板图片的颜色重新上色 wc_color = wc.recolor(color_func=image_colors) # 将词云图片导出到当前文件夹 wc_color.to_file('out-alice.png')
到此这篇关于python词云库wordcloud自定义词云制作步骤分享的文章就介绍到这了,更多相关python wordcloud词云制作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)