我与Python相遇的每天_2020-5-28 词云图

1.    绘制词云图

·安装软件:jieba(分词)、wordcloud(词云)

·使用到的库:matplotlib.pyplot、IPL(提取图片)、numpy

·思路:

A. 文本预处理

导入文本数据-open/read,简单预处理-replace;

分词-jieba,分词连接-join

B.导入停词-open/read

C. 导入背景图片-PIL.Image/np.array

D. 生成词云-WordCloud()

E. 讲文本导入词云-generate

F.  展示结果

尺寸控制-subplots/imshow/axis/show

              注:文本.txt、stop_word.txt、backgroud.png

·问题

A. 能做成词云的形状有哪些要求

B. subplots和figure函数的区别在哪

C. 如何提高背景图片导入后的效果—pillow库

D. 字体库的处理

可网络下载放到指定位置,或者直接获取电脑自带字体库位置获取对应字体

E. 文本数据

文本采用txt文档,里面的数据尽量大而多



2.    WordCloud各参数含义

WordCloud是wordcloud绘制词云图最核心的类。主要参数如下:

font_path——字符型,传入自定义字体路径

width——int型,控制词云图画布宽度,默认400

height——int型,控制词云图画布高度,默认200

prefer_horizontal——float型,控制所有水平显示的问题相对于竖直显示文字的比例,越小显示的文字越多

mask——传入背景图。图片处理graph=numpy.array(PIL.Imag(‘图.png’))

contour——float型,当mask不为None时,contour参数为图像轮廓线显示宽度。默认为0,即不显示轮廓线

contour_color——设置轮廓线颜色,默认‘black’

scale——当画布固定时,按照比例放大画布。如scale=1.5,则长宽都是为原来画布的1.5倍

min_font_size——int型,词云图最小词的字体大小,默认4

max_font_size——int型,词云图最大词的字体大小,默认为200

max_words——int型,画布最多绘制的词个数,默认200

stopwords——控制绘图是否忽略停用词,默认为None,即条用自带的英文停用词表。也可传入自定义的中文停用词

background_color——控制词云图背景色,默认‘black’

relative_scalling——float型,控制字体大小和对应词频的相关性。设置为1,完全相关;设置为0,完全不相关;默认设置0.5

color_func——传入自定义调色盘函数,默认None

colormap——对应matplotlib中的colormap调色盘,默认‘virids’。该参数与color_func互斥,当color_func有函数传入时,本参数失效

repeat——bool型,控制是否允许出现重复词,默认False(不出现)

random_state——控制随机水平。传入某个固定的数字后,每一次绘图文字布局将不会改变

collocation——bool型,默认True。是否包括两个单词的搭配

font_step——int型,默认1,字体大小的步长。大于1时加快运算,但可能会导致较大误差

mode——string型,默认‘RGB’。当参数为‘RGBA’时,其中A代表透明度。且background_color不为空时,背景为透明

normalize_plurals——bool型,默认True。是否移除词尾的s



3.     wordcloud绘制云图遇到的小问题

·scipy.misc.imread(IMG_FILE) 将图片读取出来为array类型,即numpy类型

但scipy.misc import 'imread' 导入失败新版抛弃了这个接口,需要手动装旧版

·imshow和show的区别

imshow将图像绘制到内存,也就是说图像已经绘制了,只是在内存没有传到显示器,然后调用show呈现在显示器上

·提取关键字

jieba.cut(x) 返回一个生成器,可通过for循环来取里面的每一个词

jieba.lcut(x) 返回一个列表类型

·生成词频

wc.generate(text)直接生成词频

generate_from_frequencies适用于已知词及其对应的词频是多少(已有数据库),不需要分词的情况下用。函数的参数是dict字典

·从图片获取颜色色系

导入from wordcloud import ImageColorGenerator

提取background = Image.open(img_file)

usa_mask =ImageColorGenerator(np.array(background))

应用plt.imshow(wordcloud.recolor(color_func=usa_mask), alpha=1)

[if !supportLists]4.     [endif]stylecloud绘制云图

stylecloud是wordcloud的优化改良版。基于wordcloud,支持个性化的云图创作。

两者最大的区别:stylecloud可以直接将原始文本转换成本地词云图片文件

·制作云图

stylecloud制作云图只需要gen_stylecloud一个函数即可。主要参数有:

text——字符串,格式同wordcloud的generate方法传入的text

gradient——控制云图颜色渐变的方向。vertical为垂直,horizontal为水平(默认)。此功能在python3.2已经弃用

size——控制输出图像文件的分辨率(默认方形图,分辨率512),代表长和宽

icon_name——词云形状传入参数,默认‘fas fa-flag’

palette——控制调色方案,默认为’cartocolors.qualitative.Bold_5’

background_color——字符串,控制词云图底色。可传入颜色名称或16进制色彩,默认’white’

max_font_size——最大字

max_words——最多字数

stopwords——bool型,控制是否开启去停用词功能,默认True,调用自带的英文停用词

custom_stopword——传入自定义的停用词list,配合stopwords=True使用

output_name——控制输出词云图文件的文件名,默认stylecloud.png

font_path——传入自定义字体文件的路径

random_state——控制随机数水平,传入某个固定的数字之后,每一次绘图文字布局将不会改变。

collocation——bool型,默认True。是否包括两个单词的搭配

·默认参数设置

def gen_stylecloud(text=None,

                  file_path=None,   #输入文本/CSV 的文件路径

                  size=512,  # stylecloud的大小(长度和宽度)

                   icon_name='fasfa-flag',  # stylecloud形状的图标名称

                   palette='cartocolors.qualitative.Bold_6',  #调色板

                   colors=None,

                  background_color="white", #背景颜色

                  max_font_size=200,  # stylecloud中的最大字号

                  max_words=2000,  # stylecloud可包含的最大单词数

                  stopwords=True,  #布尔值,用于筛除常见禁用词

                  custom_stopwords=STOPWORDS,

                  icon_dir='.temp',

                   output_name='stylecloud.png',  # stylecloud输出文本名

                  gradient=None,  #梯度方向

                  font_path=os.path.join(STATIC_PATH, 'Staatliches-Regular.ttf'), #stylecloud所用字体

                  random_state=None,  #控制单词和颜色的随机状态

                  collocations=True,

                  invert_mask=False,

                  pro_icon_path=None,

                      pro_css_path=None)

·使用Font Awesome提供的免费图表来变更词云形状

参考https://www.runoob.com/font-awesome/fontawesome-reference.html

设置显示形状参数:icon_name

操作:将链接中对应图标的描述赋值给icon_name参数

注意:链接的描述是以‘fa’开头,需要变更为‘fas’

举例:icon_name=‘fas fa-plane’

·通过palettable更改调色板的自定义风格

参考https://jiffyclub.github.io/palettable/

设置配色方案参数:palette

操作:进入链接任意点击一个palettable(palettable:***),进入新链接选择Contents的颜色[color]

将***.[color]赋值给palette参数

注意:不能直接用最后一个颜色赋值,需要完整的色系

举例:palette= 'matplotlib.Inferno_3'

·添加梯度,是颜色按照特定方向流动

参数:gradient

操作:gradient=‘vertical’ #垂直

      gradient=‘horizontal’ #水平

你可能感兴趣的:(我与Python相遇的每天_2020-5-28 词云图)