matplotlib实际上是一个面向对象的绘图库,它所绘制的图表元素均对应为一个对象。matplotlib官网提供了3种API:
(1)pyplot API:pyplot API是使用pyplot模块开发的借口,该接口的底层封装了一系列与MATLAB命令同名的函数,使用这些函数可以像使用MATLAB命令一样快速地绘制图表。
(2)object-oriented API:object-oriented API是面向对象的接口,该接口包含一系列对应图表元素的类,只有创建这些类的对象并按照隶属关系组合到一起才完成一次完整的绘图。
(3)pylab API:pylab API是使用pylab模块开发的接口,它最初是为了模仿MATLAB的工作方式而设计的,包括pyplot、numpy模块及一些其他附加功能,适用于Python交互环境中。
一、绘制折线图
实例:展示未来15天最高气温、最低气温以及中间气温折线图(中间气温用红色虚线表现)
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#准备气温数据(最高温和最低温)
x = np.arange(4, 19)
y_max = np.array([32, 33, 34, 34, 33, 31, 30, 29, 30, 29, 26, 23, 21, 25, 31])
y_min = np.array([19, 19, 20, 22, 22, 21, 22, 16, 18, 18, 17, 14, 15, 16, 16])
#准备中间气温数据(提示:最小值+最大值,再除以2)
y_med = (y_max+y_min)/2
#绘制折线图
plt.plot(x,y_max)
plt.plot(x,y_min)
plt.plot(x,y_med,ls ='dashed',c='red')#更改图线的形态、颜色(ls='dashed',c='red')虚线、红色,也可以加'--,r'
#展示图表
plt.show()
运行结果如下图:
二、绘制柱形图
实例:2013年-2019年某两家电商平台的GMV
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#准备某电商平台数据
x = np.arange(1,8)
y1 = np.array([10770, 16780, 24440, 30920, 37670, 48200, 57270])
y2 = np.array([9770, 14780, 23440, 28920, 38670, 49200, 60270])
#柱形的宽度
bar_width = 0.3
# 绘制柱形图(在设置x时,多加一个柱形的宽度(bar_width)即可分开两组柱形)
plt.bar(x, y1, tick_label=["FY2013", "FY2014","FY2015",
"FY2016","FY2017", "FY2018", "FY2019"], width=0.3)
plt.bar(x+bar_width,y2,width=0.3)
#展示图表
plt.show()
代码运行结果如下:
三、绘制条形图(并加入误差棒)
实例:国家统计局给出的网购替代率不一定精准,请为所有条形图添加误差棒,用于展示3%的误差
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.array([0.959, 0.951, 0.935, 0.924, 0.893,
0.892, 0.865, 0.863, 0.860, 0.856,
0.854, 0.835, 0.826, 0.816, 0.798,
0.765, 0.763, 0.67])
y = np.arange(1, 19)
labels = ["家政、家教、保姆等生活服务", "飞机票、火车票", "家具", "手机、手机配件",
"计算机及其配套产品", "汽车用品", "通信充值、游戏充值", "个人护理用品",
"书报杂志及音像制品", "餐饮、旅游、住宿", "家用电器",
"食品、饮料、烟酒、保健品", "家庭日杂用品", "保险、演出票务",
"服装、鞋帽、家用纺织品", "数码产品", "其他商品和服务", "工艺品、收藏品"]
#设置偏差数据
error = [0.03]
#绘制条形图(用xerr=error插入误差棒)
plt.barh(y,x,tick_label=labels,align="center",height=0.6,xerr=error)
#展示图表
plt.show()
代码运行结果:
补充内容
matplotlib颜色对照表
该内容参考:Matplotlib绘图颜色