Python 进阶 (四十) 应用 matplotlib 绘图实战
一、前言
matplotlib
是基于Python
语言的开源项目,旨在为Python
提供一个数据绘图包。我将在这篇文章中介绍 matplotlib API 的核心对象,并介绍如何使用这些对象来实现绘图。实际上,matplotlib 的对象体系严谨而有趣,为使用者提供了巨大的发挥空间。用户在熟悉了核心对象之后,可以轻易的定制图像。matplotlib 的对象体系也是计算机图形学的一个优秀范例。即使你不是 Python 程序员,你也可以从文中了解一些通用的图形绘制原则。
matplotlib
使用numpy
进行数组运算,并调用一系列其他的 Python 库来实现硬件交互。matplotlib 的核心是一套由对象构成的绘图 API。
应毕业论文要求,分析互联网购药平台——“立马送药”中用户的购药规律,实现用户购药信息可视化。在学习完 Python 基础知识之后决定使用 python 结合 matplotlib 绘制折线图、柱形图和饼图,分别统计每个平台用户每月的购药量(折线图或柱形图-药品数量趋势)和药品种类(饼图)。现把相关知识整理如下:
二、环境准备
首先是需要下载安装相关的工具包,分别输入下面的代码进行安装:
三、绘图实战
3.1 简单直线图
3.2 折线图
简单实现了一个给定数值的折线图的绘制,暂未实现 python 读取 Excel 数值的部分,因此代码比较繁琐。
3.3 饼状图
画饼图用到的方法为: matplotlib.pyplot.pie()
参数为:
参数说明:
x
(每一块)的比例,如果 sum(x) > 1 会使用 sum(x)归一化labels
(每一块)饼图外侧显示的说明文字explode
(每一块)离开中心距离startangle
起始绘制角度,默认图是从 x 轴正方向逆时针画起,如设定=90 则从 y 轴正方向画起 shadow 是否阴影labeldistance
label 绘制位置,相对于半径的比例shadow
是否阴影labeldistance
label 绘制位置,相对于半径的比例, 如<1 则绘制在饼图内侧autopct
控制饼图内百分比设置,可以使用 format 字符串或者 formatfunction'%1.1f'指小数点前后位数(没有用空格补齐)pctdistance
类似于 labeldistance,指定 autopct 的位置刻度radius
控制饼图半径
返回值:如果没有设置 autopct,返回(patches, texts)如果设置 autopct,返回(patches, texts, autotexts)patches -- list --matplotlib.patches.Wedge 对象 texts autotexts -- matplotlib.text.Text 对象完整代码:
3.4 设置线条形状、颜色等
本文是学习《matplotlib for python developers》的一点笔记。plot 画图时可以设定线条参数。包括:颜色、线型、标记风格。
3.4.1 控制颜色
颜色之间的对应关系为 b—blue c—cyan g—green k—-blackm—magenta r—red w—white y—-yellow
有三种表示颜色的方式:a:用全名 b:16 进制如:#FF00FF c:RGB 或 RGBA 元组(1,0,1,1) d:灰度强度如:‘0.7’
3.4.2 控制线型
符号和线型之间的对应关系-
实线&–
短线-.
短点相间线:
虚点线
3.4.3 控制标记风格
标记风格有多种:
. Point marker
, Pixel marker
o Circle marker
v Triangle down marker
^ Triangle up marker
< Triangle left marker
Triangle right marker
1 Tripod down marker
2 Tripod up marker
3 Tripod left marker
4 Tripod right marker
s Square marker
p Pentagon marker
Star marker
h Hexagon marker
H Rotated hexagon D Diamond marker
d Thin diamond marker
| Vertical line (vlinesymbol) marker
_ Horizontal line (hline symbol) marker
Plus marker
x Cross (x) marker
下面的实例集合以上三种:具体代码和效果如下所示:
四、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce1d238ae797760e019095947】。文章转载请联系作者。
评论