前言
本篇为《使用Python进行数据分析》中介绍Matplotlib库的基础使用方法的第一篇,主要内容为使用Matplotlib库的一些常用技巧,绘画简易的线形图、散点图、密度图和等高线图等用图,以及进行可视化异常处理等。
Matplotlib是使用Python进行数据可视化的基本方法之一,操作简便快捷并且具有良好的操作系统兼容性和图形显示底层接口兼容性,对于数据分析新手来说,是非常好用的可视化工具。尽管近几年新的可视化工具在源源不断地进入大家的视野中,例如Seaborn、ggplot、HoloViews、AItair以及Pandas中对Matplotlib的API封装用法。但Matplotlib仍是可视化工具中的基础,并且掌握Matplotlib更能让你灵活地控制最终的图形结果,学习Matplotlib仍是学习可视化技术中不可或缺的一环。
目录
1.Matplotlib常用技巧
1.1 导入Matplotlib
最常用的导入方式
import matplotlib as mpl
import matplotlib.pyplot as plt
1.2 设置绘图样式
在Matplotlib中可以使用plt.style
来选择一种绘图风格,例如选择经典风格(classic),可以使用plt.style.available
来查看可以使用的库中自带的风格,还可以自定义自己想要的绘图风格,有关绘图风格的详细使用方法会在后续介绍。
两种风格的对比
plt.style.use('classic')
x=np.linspace(0,10,100)
plt.plot(x,np.sin(x))
plt.style.use('bmh')
x=np.linspace(0,10,100)
plt.plot(x,np.sin(x))
1.3 show() or not?
在脚本文件中画图时,需要使用plt.show()
来显示图形,需注意的是plt.show()
通常需要放到脚本的最后,用来显示脚本的绘图。
但如果你使用IPython交互绘图,则不需使用show()命令。使用魔法命令%matplotlib
启动Matplotlib模式后即可开始画图。
%matplotlib
Using matplotlib backend: TkAgg
import matplotlib.pyplot as plt
此后的任何plt命令都会自动打开一个图形窗口,增加新的命令就会使图形更新。对于不会即时更新的命令可以使用plt.draw()
强制更新。
1.4 将图形保存为文件
我们可以使用plt.savefig()
命令将绘制的图形保存为文件,且可以指定图片的分辨率、边缘的颜色等参数,具体的使用方法可以参考这篇博文:Python中Matplotlib Savefig()不同参数的使用.
2.两种绘图接口
能够分辨Matplotlib的两种绘图接口是非常重要的。初学者经常会搞混或弄不清楚这是怎么回事,接下来介绍这两种绘图接口:一个是便捷的MATLAB风格接口,另一个是功能更强大的面向对象接口。
#MATLAB接口
x=np.linspace(1,10,100)
plt.figure() #创建图形
#创建两个子图中的第一个,设置坐标轴
plt.subplot(2,1,1) #行,列,子图编号
plt.plot(x,np.sin(x))
#创建两个子图中的第二个,设置坐标轴
plt.subplot(2,1,2)
plt.plot(x,np.cos(x))
plt.rcParams['figure.figsize']=(5.0,3.0)
#面向对象接口
#先创建图形网格
#ax是一个包含两个Axes对象的数组
fig,ax=plt.subplots(2)
#在每个对象上调用plot()方法
ax[0].plot(x,np.sin(x))
ax[1].plot(x,np.cos(x))
MATLAB接口对于初学者来说使用起来会更清楚,更方便而且更快捷。而面向对象的接口则可以适应更复杂的场景,更好地控制你自己的图形。随着后续更深层次内容的介绍,大家会更加了解两种接口的使用以及它们之间的区别和联系。
3.绘制简易线形图
现在,让我们来创建一个简单的线形图,即实现线性方程 y = f ( x ) y=f(x) y=f(x)的可视化。
首先,创建一个图形fig和一个坐标轴ax。
plt.style.use('bmh') #根据自己的喜好设置绘图风格
fig=plt.figure()
ax=plt.axes()
结果如下
在Matplotlib中,figure相当于创建了一张空白的画布,可以容纳各种坐标轴、图形、文字和标签;而axes则是一个带有刻度和标签的矩形,最终会包含所有可视化的图形元素。在创建好坐标轴后,就可以用ax.plot来画图了。
fig=plt.figure()
ax=plt.axes()
x=np.linspace(0,10,1000)
ax.plot(x,np.sin(x))
另一种绘图方式:
plt.plot(x,np.sin(x)) #直接使用plot命令,不使用面向对象的接口
plt.plot(x,np.cos(x))
3.1 调整线条的颜色和风格
首先介绍plot函数中可以进行调整的参数plt.plot(x,y,color,linestyle,marker,alpha,linewidth,markersize)
x,y | 表示x轴和y轴所对应的数据 |
---|---|
color | 指定线条的颜色 |
linestyle | 指定线条类型 |
marker | 表示绘制的点的类型 |
alpha | 表示点的透明度,用0-1之间的小数表示 |
linewidth | 表示线条的宽度,取0-10之间的数值 |
markersize | 点的大小 |
接下来介绍几种常用参数的常用取值
color参数常用的八种取值(颜色)的缩写
颜色缩写 | 代表的颜色 | 颜色缩写 | 代表的颜色 |
---|---|---|---|
b | 蓝色 | g | 绿色 |
y | 黄色 | m | 品红 |
k | 黑色 | w | 白色 |
r | 红色 | c | 青色 |
linestyle常用取值
linestyle取值 | 线条风格 | linestyle取值 | 线条风格 |
---|---|---|---|
- | 实线 | -. | 点线 |
- - | 长虚线 | : | 短虚线 |
线条标记解释
marker取值 | 点的类型 | marker取值 | 点的类型 |
---|---|---|---|
‘o’ | 圆圈 | ‘.’ | 点 |
‘D’ | 菱形 | ‘s’ | 正方形 |
‘h’ | 六边形1 | ‘H’ | 六边形2 |
‘d’ | 小菱形 | ‘-’ | 水平线 |
‘v’ | 一角朝下的三角形 | ‘8’ | 八边形 |
‘<’ | 一角朝左的三角形 | ‘p’ | 五边形 |
‘>’ | 一角朝右的三角形 | ‘,’ | 像素 |
‘^’ | 一角朝上的三角形 | ‘+’ | 加号 |
‘\’ | 竖线 | ‘*’ | 星号 |
‘x’ | 叉号(X) | ‘None’ | 无 |
现在举实例说明其具体使用方法
plt.plot(x,np.sin(x),color='blue') #标准颜色名称
plt.plot(x,np.sin(x),color='g') #缩写颜色代码(rgbcmyk)
plt.plot(x,np.sin(x),color='0.75') #范围在0~1之间的灰度值
plt.plot(x,np.sin(x),color='#FFDD44') #十六进制(RRGGBB,00~FF)
plt.plot(x,np.sin(x),color=(1.0,0.2,0.3)) #RGB元组,范围在0~1
plt.plot(x,np.sin(x)