饼状图
饼状图显示一个数据系列中各项的大小与各项总和的比例。Pyplot中绘制饼状图的函数为 pie(),主要参数如下:
- x:饼图中每一块的比例,通常是一个数组。如果 sum(x) > 1 会使用归一化后的比例,即每一块除以sum(x),如果sum(x) < 1,则按照实际比例,此时有一部分为空白;
- explode:指定饼图中每块离开中心的距离,通常是一个数组,默认为0;
- labels:为饼图添加标签说明,类似于图例说明,标签列表;
- colors:指定饼图的填充色,颜色列表;
- autopct:设置饼图内每块百分比显示样式,可以使用format字符串或者格式化函数'% width. Precision f %%'指定饼图内百分比的数字显示宽度和小数的位数;
- radius:设置饼图的半径;
- labeldistance:每块旁边的文本标签的位置离饼的中心点的距离;
- shadow:是否有阴影效果,默认为False。
案例:已知一个员工一天的活动时间分配为:工作8小时、睡觉7小时、吃饭3小时,玩乐6小时,根据这些信息,绘制该员工一天时间分配饼状图,效果如下。
参考代码如下:
散点图
散点图是以一个变量为横坐标,另一变量为纵坐标,利用散点的分布形态反映变量统计关系的一种图形,以不同颜色、不同大小的点表示数据之间的关系。Pyplot 中绘制散点图的函数为scatter(),主要参数如下:
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, **kwargs)
- x:散点图中点的x轴坐标;
- y:散点图中点的y轴坐标;
- s:散点图点的大小,默认为20,标量或数组;
- c:散点图点的颜色,默认为蓝色,标量或数组;
- marker:指定散点图点的形状,默认为圆形;
- cmap:颜色映射,可选,将颜色映射到已有色系,例如plt.cm.Blues;
- norm:将亮度数据归一化到 0-1 之间;
- vmin:亮度的最小值;
- vmax:亮度的最大值;
- alpha:设置散点的透明度;
编程程序,绘制散点图,要求图中的每个散点随机呈现不同的大小和颜色。效果如图所示,随机生成30个点,x轴坐标和y轴坐标都在0-10之间,颜色取值在0-30之间。大小在30-300之间。效果图如下:
代码参考如下:
生成词云图
近年来,互联网、新媒体等行业报告中都会看到精美的词云图。词云图能够呈现出比较好的可视化效果,从视觉上可明确区分各词汇的频次,快速领略文本的主旨,是很好的数据展现形式。
Python中提供的 wordcloud 库可以快速生成词云图。但主要是针对英文,通过空格进行分词。wordcloud的离线安装如下(先下载安装包):
比较流行的中文分词库为 jieba,可将其与 wordcloud 库联合使用从而对中文文章生成相应的词云图。 jieba库的在线安装如下:
WordCloud(font_path=None, width=400, height=200, margin=2, mask=None, max_words=200, min_font_size=4, stopwords=None, background_color='black', max_font_size=None, font_step=1)
- font_path:字体路径,默认不支持中文,可通过该参数指定字体,支持 OTF 和 TTF
- width、height: 画布的宽度和高度,单位为像素;
- margin:文字之间的边距;
- mask: 指定图片的形状,忽略白色部分,通常为 ndarray;
- max_words: 最多显示的词的数量,默认为200;
- min_font_size、max_font_size:最小字体大小、最大字体大小;
- font_step: 字体大小增加步长,默认为1
- background_color:词云图的背景颜色,默认为黑色
- ……
一些关键的方法:
- generate (text): 根据文本生成词云图,返回当前对象本身;
- to_image():将词云对象转化为图片;
- to_file(文件名):将词云对象转化为文件;
- to_array():将词云对象转化为数组。
生成词云图开发步骤
- 创建 wordcloud 对象,设定基本信息;
- 调用 generate() 方法生成词云;
- 保存或显示词云图。
jieba 库分词的三种模式:
(1)精准模式:把文本精准地分开,不存在冗余;
(2)全模式:把文中所有可能的词语都扫描出来,存在冗余;
(3)搜索引擎模式:在精准模式的基础上,再次对长词进行切分。
jieba库中的一些关键方法:
- jieba.cut(sentence, cut_all=False, HMM=True):sentence表示需要分词的句子,cut_all 表示是否采用全模式,HMM 表示是否使用 HMM (隐马尔可夫模型)模型;
- jieba.cut_for_search(sentence, HMM=True):sentence表示需要分词的句子,HMM表示是否使用 HMM 模型,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细;
- jieba.cut() 方法和 jieba.cut_for_search() 方法返回的结果都是可迭代对象,可使用 for 循环获取分词后得到的每一个词语,此外,jieba.lcut() 和 jieba.lcut_for_search() 效果分别和 jieba.cut() 和 jieba.cut_for_search() 效果类似,直接返回列表;
- add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典;
生成中文词云步骤
- 读取文件内容
- 借助 jieba 库对中文进行分词,然后将结果合并并以空格隔开;
- 打开图片文件,得到对应数组;
- 创建WordCloud对象,设置基本信息;
- 生成词云图,并保存或显示。
同一篇文章不同的效果图:
参考代码如下: