概述
在matplotlib中,整个图像为一个Figure图像,在每个Figure图像中可以包含一个或多个Axes图像,每个Axes图像都是一个拥有自己坐标系统的绘图区域
(1)在一个Figure中绘制多个图表
fig1 = plt.figure(num=1,figsize=(4,2))
plt.plot(np.random.rand(50).cumsum(),'k--')
fig2 = plt.figure(num=2,figsize=(4,2))
plt.plot(50-np.random.rand(50).cumsum(),'k--')
输出结果:
其中figure函数的参数中,num为图表序号,figsize为图表大小,还可以通过dpi设置其分辨率,如果在绘图的时候不写plt.figure(),则最后会默认生成一个图表
(2)子图创建1—先建立子图然后填充图表
我们可以先创建好子图的框架,然后再创建图表来填充子图,比如:
fig = plt.figure(figsize=(10,6),facecolor = 'gray')#背景颜色为gray
ax1 = fig.add_subplot(2,2,1) # 创建2*2四个子图,ax1为第一个
填充子图:
plt.plot(np.random.rand(50).cumsum(),'k--')
plt.plot(np.random.randn(50).cumsum(),'b--')
创建其他的子图并填充
ax2 = fig.add_subplot(2,2,2) # 第一行的右图
ax2.hist(np.random.rand(50),alpha=0.5)
ax4 = fig.add_subplot(2,2,4) # 第二行的右图
df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax4.plot(df2,alpha=0.5,linestyle='--',marker='.')
输出结果:
(3)子图创建2—创建一个新的figure,并返回一个subplot对象的numpy数组
这种方法是调用plt.subplots( ) 的方法来实现
fig,axes = plt.subplots(2,3,figsize=(10,4))
ts = pd.Series(np.random.randn(1000).cumsum())
print(axes, axes.shape, type(axes))
#生成图表对象的数组
ax1 = axes[0,1]#子图为第0行第1个
ax1.plot(ts)#绘制子图
输出结果:
(4)参数调整
调用plt.subplot( ) 时可以适当调整其参数,比如不同的子图是否共享其x和y刻度:
fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
通过plt.subplots_adjust( ) 的参数wspace和hspace来控制宽度和高度的百分比,比如subplot之间的间距
for i in range(2):
for j in range(2):
axes[i,j].hist(np.random.randn(500),color='k',alpha=0.5)
plt.subplots_adjust(wspace=0,hspace=0)
(5)子图创建3—多系列图,分别绘制
可以将一个Dataframe的不同columns分别绘制到不同的子图中
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))#创建Dataframe
df = df.cumsum()#提取columns
df.plot(style = '--.',alpha = 0.4,grid = True,figsize = (8,8),
subplots = True,
layout = (2,3),
sharex = False)#subplots是否分别绘制子图
plt.subplots_adjust(wspace=0,hspace=0.2)
输出结果:
这篇博客和前两篇博客的内容就是matplotlib的一些基础知识了,从下一篇博客开始将要写matplotlib的一些具体的绘制方法
关注欢喜,走向成功~
最后
以上就是明理康乃馨为你收集整理的Python数据分析可视化---深入解析图表绘制工具Matplotlib子图的全部内容,希望文章能够帮你解决Python数据分析可视化---深入解析图表绘制工具Matplotlib子图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复