matplotlib 数据可视化 - 多面板图
2018-11-29 本文已影响4人
东南有大树
![](https://img.haomeiwen.com/i5787343/58b477cb58927bde.png)
在数据分析的道路上,不能没有数据可视化!这将是我本周研究matplotlib的最后一个主题,从此,matplotlib的基本框架、用法就已经有了基础的认识,在以后的使用过程中,可“举一隅而以三隅反”,有问题解决问题,边做边学,知行合一。
另外我在这里声明一下,我的《matplotlib数据可视化》系列的文章,皆是学习笔记,内容非原创,恶者勿喷。我也是刚接触python不久,还在初学者的道路上。这条路艰难而长远,需得上下求索!近期,我也在考虑写一些原创的东西,希望可以和有志之士分享一二。所谓何以解忧,乃生而遇知己也!
import matplotlib.pyplot as plt
import numpy as np
多面板图形
如何在其他子图中显示子图
每个图表都有一个Axes对象,即拥有轴对象的框架。如果想在一个子图中显示另一个子图,那就可以在这个框架里再添加一个小的框架,如此,即可在上面添加一个小的图像。
'''获利一个figure图形对象'''
fig = plt.figure()
'''在该图形上添加一个axes对象'''
ax = fig.add_axes([0.1,0.1,0.8,0.8])
'''再添加一个axes对象'''
inner_ax = fig.add_axes([0.6,0.6,0.25,0.25])
'''显示'''
plt.show()
![](https://img.haomeiwen.com/i5787343/845bd3738c86e148.png)
'''获利一个figure图形对象'''
fig = plt.figure()
'''在该图形上添加一个axes对象'''
ax = fig.add_axes([0.1,0.1,0.8,0.8])
'''再添加一个axes对象'''
inner_ax = fig.add_axes([0.6,0.6,0.25,0.25])
'''分别在两个Axes对象上绘图'''
x1 = np.arange(10)
y1 = np.array([1,2,7,1,5,2,4,3,2,1])
x2 = np.arange(10)
y2 = np.array([1,3,7,1,9,2,6,3,2,7])
ax.plot(x1,y1,c='r')
inner_ax.plot(x2,y2,c='g')
'''显示'''
plt.show()
![](https://img.haomeiwen.com/i5787343/d60c6056352ee042.png)
子图网格
GridSpec()函数可以将绘图区域分成多个子区域,你可以把一个或多个子区域分配给每一幅子图。
gs = plt.GridSpec(3,3)
fig = plt.figure(figsize=(6,6))
fig.add_subplot(gs[1,:2])
fig.add_subplot(gs[0,:2])
fig.add_subplot(gs[2,0])
fig.add_subplot(gs[:2,2])
fig.add_subplot(gs[2,1:])
plt.show()
![](https://img.haomeiwen.com/i5787343/95cc5b55b900d0f2.png)
绘制实际的图像。
gs = plt.GridSpec(3,3)
fig = plt.figure(figsize=(6,6))
x1 = np.array([1,3,2,5])
y1 = np.array([4,3,7,2])
x2 = np.arange(5)
y2 = np.array([3,2,4,6,4])
s1 = fig.add_subplot(gs[1,:2])
s1.plot(x1,y1,'r')
s2 = fig.add_subplot(gs[0,:2])
s2.bar(x2,y2)
s3 = fig.add_subplot(gs[2,0])
s3.barh(x2,y2,color='g')
s4 = fig.add_subplot(gs[:2,2])
s4.plot(x2,y2,'k')
s5 = fig.add_subplot(gs[2,1:])
s5.plot(x1,y1,'b^',x2,y2,'yo')
plt.show()
![](https://img.haomeiwen.com/i5787343/8cd8831eba86505b.png)