Matplotlib
Matplotlib中的基本图表包括的元素
- x轴和y轴 axis 水平和垂直的轴线
- 轴标签 axisLabel 水平和垂直的轴标签
- x轴和y轴刻度 tick 刻度标示坐标轴的分隔,包括最小刻度和最大刻度
- x轴和y轴刻度标签 tick label 表示特定坐标轴的值
- 绘图区域(坐标系) axes 实际绘图的区域
- 画布 figure 呈现所有的坐标系

Matplotlib三层结构:
- 容器层
- 画板层(canvas)
- 画布层(figure)
- 绘图区/坐标系(x/y轴张成的区域)
- 辅助显示层
- 图像层
基础
使用plt.grid方法可以开启网格线,使用plt面向对象的方法,创建多个子图显示不同网格线
- lw代表linewidth,线的粗细
- alpha表示线的明暗程度
- color代表颜色
- axis显示轴向
设置坐标轴界限
plt.axis([xmin,xmax,ymin,ymax])
注意:必须x,y轴同时设置界限
- 可以通过xlim,ylim方法
面向对象风格设置画布样式面向对象风格设置画布样式
- 使用面向对象风格设置画布样式,如果属性找不到,就使用set_XX函数设置
- . + Tab键,快捷查看对象属性和方法
坐标轴标签
- xlabel方法和ylabel方法(可以用字典来设置)
- color 标签颜色
- fontsize 字体大小
- rotation 旋转角度
标题
- plt.title()方法
- loc {left,center,right}
- color 标签颜色
- fontsize 字体大小
- rotation 旋转角度
legend方法
- 两种传参方法:
- 第一种传参方法:
- 分别在plot函数中增加label参数,再调用legend()方法显示
- 直接在legend方法中传入字符串列表
- 第二种传参方法:
- plt.plot(...label = xxx )
loc参数
loc参数用于设置图例标签的位置,一般在legend函数内
matplotlib已经预定义好几种数字表示的位置
loc参数可以是2元素的元组,
-
- [0,0] 左下
- [0,1] 左上
- [1,0] 右下
- [1,1] 右上
- 图例也可以超过图的界限loc = (-0.1,0.9)
ncol参数
ncol控制图例中有几列,在legend中设置ncol,需要设置loc
linestyle、color、marker
修改线条样式
axes1 = plt.subplot(221) # True 开启网格线 # linewidth设置网格线的粗细 axes1.grid(True,linewidth=2) axes2 = plt.subplot(222) # alpha设置透明度 0-1之间的数 axes2.grid(True,alpha=0.5) axes3 = plt.subplot(223) axes3.grid(True,color='green') axes4 = plt.subplot(224) # 设置网格线方向 # linestyle/ls设置虚线 axes4.grid(True,axis='x')

注:matplotlib显示中文如何处理?
###Windows解决方法### from pylab import mpl # 指定默认字体 mpl.rcParams['font.sans-serif'] = ['FangSong'] # 解决保存图像是负号'-'显示为方块的问题 mpl.rcParams['axes.unicode_minus'] = False
保存图片:
使用figure对象的savefig的函数
- filename
含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
- dpi
图像分辨率(每英寸点数),默认为100
- facecolor
图像的背景色,默认为“w”(白色)
设置plot的风格和样式:
plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为: plt.plot(X, Y, ‘format’, …)
点和线的样式:
- 颜色
- 参数
color或c
- 参数
- 透明度
- alpha
- 背景色
- 设置背景色,通过
plt.subplot()方法传入facecolor参数,来设置坐标系的背景色
- 设置背景色,通过
- 线型
- 参数
linestyle或ls 
- 参数
- 线宽
linewidth或lw参数
- 不同宽度的破折线
dashes参数(自定义破折线的样式:eg.dashes = [20,50,5,2,10,5])
- 点型
- marker 设置点形

-
标记 描述 标记 描述 ’s’ 正方形 ‘p’ 五边形 ‘h’ 六边形1 ‘H’ 六边形2 ‘8’ 八边形
- markersize 设置点形大小
- marker 设置点形
多参数连用:

多个曲线同一设置:
属性名声明,不可以多参数连用
plt.plot(x1, y1, x2, y2, fmt, …)
多曲线不同设置:
多个都进行设置时,多参数连用 plt.plot(x1, y1, fmt1, x2, y2, fmt2, …)
三种设置方式
- 向方法传入关键字参数
import matplotlib as mpl
- 对实例使用一系列的setter方法
plt.plot()方法返回一个包含所有线的列表,设置每一个线需要获取该线对象
eg: lines = plt.plot(); line = lines[0]
line.set_linewith()
line.set_linestyle()
ine.set_color()
- 对坐标系使用一系列的setter方法
axes = plt.subplot()获取坐标系
set_title()
set_facecolor()
set_xticks、set_yticks 设置刻度值
set_xticklabels、set_yticklabels 设置刻度名称
X、Y轴坐标刻度:
plt.xticks()和plt.yticks()方法
- 需指定刻度值和刻度名称 plt.xticks([刻度列表],[名称列表])
- 支持fontsize、rotation、color等参数设置
axes = plt.subplot(111) axes.plot(x,np.sin(x)) # 使用画布对象设置坐标轴刻度和坐标轴刻度标签 axes.set_xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi]) axes.set_xticklabels(['0','$\pi$/2','π','3π/2','2π'],fontsize=20) axes.set_yticks([-1,0,1]) axes.set_yticklabels(['min',0,'max'],fontsize=20)

2D图形
1.直方图(hist())
直方图的参数只有一个x!!!不像条形图需要传入x,y
参数:
- bins(组数、组距)
可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10
- normed
如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
- color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
- orientation
通过设置orientation为horizontal创建水平直方图。默认值为vertical
2. 条形图(bar()、barh())
条形图有两个参数x,y
- width 纵向设置条形宽度
- height 横向设置条形高度
条形图适合比较各部分的大小
3.饼图(pie())
饼图只有一个参数x
饼图适合展示各部分占总体的比例
饼图阴影、分裂等属性设置:
- labels参数设置每一块的标签;
- labeldistance参数设置标签距离圆心的距离(比例值,只能设置一个浮点小数)
- autopct参数设置比例值的显示格式(%1.1f%%);
- pctdistance参数设置比例值文字距离圆心的距离
- explode参数设置每一块顶点距圆形的长度(比例值,列表);
- colors参数设置每一块的颜色(列表);
- shadow参数为布尔值,设置是否绘制阴影
- startangle参数设置饼图起始角度
4.散点图(scatter())
散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!
3D图形
曲面图:
导包
from mpl_toolkits.mplot3d.axes3d import Axes3D
使用mershgrid函数切割x,y轴
X,Y = np.meshgrid(x, y)
创建3d坐标系
axes = plt.subplot(projection=’3d’)
绘制3d图形
p = axes.plot_surface(X,Y,Z,color=’red’,cmap=’summer’,rstride=5,cstride=5)
添加colorbar
plt.colorbar(p,shrink=0.5)
def createZ(x,y): return np.sin(x) + np.cos(y)*2 - np.pi/5 from mpl_toolkits.mplot3d.axes3d import Axes3D axes = plt.subplot(projection='3d') x = np.linspace(-np.pi,np.pi,100) y = np.linspace(-np.pi,np.pi,100) # 使用x,y生成一组网格 X,Y = np.meshgrid(x,y) Z = createZ(X,Y) p = axes.plot_surface(X,Y,Z,cmap='summer',rstride=5,cstride=5) plt.colorbar(p,shrink=0.5)

玫瑰图/极坐标条形图:
创建极坐标,设置polar属性
plt.axes(polar = True)
绘制极坐标条形图
index = np.arange(-np.pi,np.pi,2*np.pi/6)
plt.bar(x=index ,height = [1,2,3,4,5,6] ,width = 2*np.pi/6)
# 玫瑰图 x = np.array([2,5,7,9,4,3,8]) plt.axes(polar = True) plt.bar(x=list('abcdefg'),height=x)

图形内的文字、注释、箭头
1.控制文字属性的方法:Prop
所有的方法会返回一个matplotlib.text.Text对象.
2.图形内的文字:text()
3.注释:annotate()
- xy参数设置箭头指示的位置
- xytext参数设置注释文字的位置
- arrowprops参数以字典的形式设置箭头的样式
- width参数设置箭头长方形部分的宽度
- headlength参数设置箭头尖端的长度,
- headwidth参数设置箭头尖端底部的宽度
- shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值),可以理解为控制箭头的长度
figure = plt.figure(figsize=(8,6)) axes = plt.subplot(111) axes.plot(x,np.sin(x)) # s 注释的文字 # xy 箭头指向的位置 # xytext 注释文字放置的位置 # arrowprops没有arrowstyle键的设置方式 axes.annotate(s='this is a annotate',xy=(0.5,0.5),xytext=(0.8,0.8), arrowprops = { 'width':10, 'headlength':12, 'headwidth':15, 'shrink':0.2 }) # 使用arrowstyle设置箭头样式 axes.annotate(s='this is a good text',xy=(-0.2,-0.2),xytext=(-0.4,-0.6), arrowprops = { 'arrowstyle': 'fancy' })



浙公网安备 33010602011771号