![0116646d65fb19ab7f82214da19fd69a.png](https://i-blog.csdnimg.cn/blog_migrate/02484af4b2f3234f554adabb36944a72.jpeg)
8个Matplotlib常用技巧,带你走进Python可视化!
前言
pandas的数据处理,基本功能都介绍完了。你都学会了吗?后面我会给大家介绍,数据处理的实战,用例子来把学过的知识点综合应用。这也是我学习Python的方法!数据处理还有一个重要的环节,那就是吧处理好的数据展示出来,对没错那就是我们的Python数据可视化。这篇文章主要介绍Matplotlib库的一些常用技巧。
导入Matplotlib
就像之前用np作为NumPy的简写形式、pd作为Pandas的简写形式一样,我们也可以在
导入 Matplotlib 时用一些它常用的简写形式。
import matplotlib.pyplot as plt
设置绘图样式
我们一般选用plt.style.use()来选择图形的绘图风格。‘classic’是Matplotlib的经典风格。
plt.style.use('classic')
将图形保存为图片
Matplotlib能将图形保存为不同的格式,使用savefig()命令将图形保存为文件。
fig= plt.figure()
plt.plot(x, np.sin(x), '-')
plt.plot(x, np.cos(x), '--')
flg.savefig('my_figure.png')
![2a833b14b1d15602177b37f4eae67415.png](https://i-blog.csdnimg.cn/blog_migrate/04f7557b680d2206905eb657fa7209b6.jpeg)
在savefig()函数里面,通过不同的扩展名,来决定你要保存图形的格式。Matplotlib支持许多图形格式,你可以通过canvas对象的方法,查看文件格式。
flg.canvas.get_supported_filetypes()
代码结果:
{'ps': 'Postscript',
'eps': 'Encapsulated Postscript',
'pdf': 'Portable Document Format',
'pgf': 'PGF code for LaTeX',
'png': 'Portable Network Graphics',
'raw': 'Raw RGBA bitmap',
'rgba': 'Raw RGBA bitmap',
'svg': 'Scalable Vector Graphics',
'svgz': 'Scalable Vector Graphics',
'jpg': 'Joint Photographic Experts Group',
'jpeg': 'Joint Photographic Experts Group',
'tif': 'Tagged Image File Format',
'tiff': 'Tagged Image File Format'}
Matplotlib两种画图接口
Matplotlib有两种不同的画图接口:一个是便捷的MATLAB风格接口,另一个是功能更强大的面向对象接口。
1.MATLAB风格接口
x= np.linspace(0, 10, 100)
flg= plt.figure() # 创建图形
创建两个子图中的第一个,设置坐标轴
plt.subplot(2, 1, 1) # (行、列、子图编号)
plt.plot(x, np.sin(x))
创建两个子图中的第二个,设置坐标轴
plt.subplot(2, 1, 2)
plt.plot(x, np.cos(x))
![20f1a8fa96d5aa3b59d9da2113082e8b.png](https://i-blog.csdnimg.cn/blog_migrate/3914e82437a7e196df5fe19ed9ac12dc.jpeg)
这种接口特征是:它会持续跟踪“当前的”图形和坐标轴。虽然这个有状态的接口画起图来又快又方便,但是创建第二个子图时,怎么才能回到第一个子图呢?虽然用MATLAB风格接口也能实现,但未免过于复杂,有一种更好的方法!
2.面向对象接口
面向对象接口可以适应更复杂的场景,更好地控制你自己的图形。在面向对象接口中,画图函数不再受到当前“活动”图形或坐标轴的限制,而变成了显式的 Figure 和 Axes 的方法。
# 先创建图形网格
ax是一个包含两个Axes对象的数组
fig, ax= plt.subplots(2)
在每个对象上调用plot()方法
ax[0].plot(x, np.sin(x))
ax[1].plot(x, np.cos(x));
![3ef843036b1d1c27bd2dd232a26c23cc.png](https://i-blog.csdnimg.cn/blog_migrate/3ad4f35ffb68ac38b7b4e6b91b95f41f.jpeg)
两种方法画简单图形时,选择那种绘制风格主要看个人喜好,不过在画复杂图形时,选择面对对象会好一些简易线形图。
绘制一个简单的图形
在所有图形中,最简单的图形应该就是线性方程y = f (x)的可视化了。要画Matplotlib图形时,都需要先创建一个图形fig和一个坐标轴ax。
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig= plt.figure()
ax= plt.axes()
![d640b8edad710d6301219f089d7a2daf.png](https://i-blog.csdnimg.cn/blog_migrate/900113ac733fd39bbe8628b94ba2e782.jpeg)
figure是plt.Figure类的一个实例,可以被看成是一个能够容纳各种坐 标轴、图形、文字和标签的容器。axes是plt.Axes类的一个实例是一个带有刻度和标签的矩形。我们通常用变量fig表示一个图形实例,用变量ax表示一个坐标轴实例或一组坐标轴实例。
fig= plt.figure()
ax= plt.axes()
x= np.linspace(0, 10, 1000)
ax.plot(x, np.sin(x))
创建好坐标轴之后,就可以用 ax.plot 画图了。怎么样可视化还是很简单吧!
![f8341d765b8bf4629f764379cc564a50.png](https://i-blog.csdnimg.cn/blog_migrate/d4d8b87c8804e7ad7f62309967eea6f5.jpeg)
调整图形:线条的颜色与风格
我们首先要调整的是:调整它线条的颜色与风格。一般使用plt.plot() 函数的color参数,它支持各种颜色值的字符串。
plt.plot(x, np.sin(x-0), color='blue')# 标准颜色名称
plt.plot(x, np.sin(x-1), color='g')# 缩写颜色代码(rgbcmyk)
plt.plot(x, np.sin(x-2), color='0.75')# 范围在0~1的灰度值
plt.plot(x, np.sin(x-3), color='#FFDD44')# 十六进制(RRGGBB,00~FF)
plt.plot(x, np.sin(x-4), color=(1.0,0.2,0.3))# RGB元组,范围在0~1
plt.plot(x, np.sin(x-5), color='chartreuse')# HTML颜色名称
![7060e50de80517538a176fb7bb0459a9.png](https://i-blog.csdnimg.cn/blog_migrate/cd825988dbbb4df54f060d88d840f9b6.jpeg)
linestyle调整线条的风格
plt.plot(x, x+0, linestyle='solid')
plt.plot(x, x+1, linestyle='dashed')
plt.plot(x, x+2, linestyle='dashdot')
plt.plot(x, x+3, linestyle='dotted');
你可以用下面的简写形式
plt.plot(x, x+4, linestyle='-') # 实线
plt.plot(x, x+5, linestyle='--') # 虚线
plt.plot(x, x+6, linestyle='-.') # 点划线
plt.plot(x, x+7, linestyle=':'); # 实点线
![01e6d30205b0dabd1657a5220f40ffe6.png](https://i-blog.csdnimg.cn/blog_migrate/3b87d4a4e77603278f3219424c74cc7e.jpeg)
如果你想用简单的方式,可以将 linestyle 和 color 编码组合起来,作为 plt. plot() 函数的一个非关键字参数使用
plt.plot(x, x+0, '-g') # 绿色实线
plt.plot(x, x+1, '--c') # 青色虚线
plt.plot(x, x+2, '-.k') # 黑色点划线
plt.plot(x, x+3, ':r'); # 红色实点线
![81e9ae7022de30950c1c54b409952b64.png](https://i-blog.csdnimg.cn/blog_migrate/f6bf5812080a786cf55b29d00ce62ff2.jpeg)
调整图形:坐标轴上下限
Matplotlib会自动为你的图形选择最合适的坐标轴上下限,但是有时自定义坐标轴上下限可能会好。调整坐标轴上下限最基础的方法是 plt.xlim() 和 plt.ylim()
plt.plot(x, np.sin(x))
plt.xlim(-1, 11)
plt.ylim(-1.5, 1.5);
![7acff401d1f05ca59ad9e6fb7c588159.png](https://i-blog.csdnimg.cn/blog_migrate/1277bc6281b7d92ec91fbfd26d9669e7.jpeg)
plt.axis() 方法可以让你用一行代码设置x和y的限值
plt.plot(x, np.sin(x))
plt.axis([-1, 11, -1.5, 1.5])
[-1, 11, -1.5, 1.5]
![5b4adcf7bfee54ef0a035e55fe4fe04f.png](https://i-blog.csdnimg.cn/blog_migrate/7223e3649d7361f9bfb3f19c0019c061.jpeg)
设置图形标签
图形标题与坐标轴标题是最简单的标签,怎样快速设置呢?
plt.plot(x, np.sin(x))
plt.title("A Sine Curve")#设置一个标题
plt.xlabel("x")#设置x轴
plt.ylabel("sin(x)")#设置y轴
Text(0,0.5,'sin(x)')
人生苦短,我用python,python学习可以关注我们哦
![c0cbc7686cb5fb6aabf2a1e9aaf24085.png](https://i-blog.csdnimg.cn/blog_migrate/2707d52b673a58bb0291721acb451fa7.jpeg)