Python学习笔记——matplotlib pyplot绘制子图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
最常用的是第三个fig,axes = plt.subplots的方法。

plt.figure+plt.plot

直接plot会自动生成figure,如果设置figure(num图表序号,figsize图表大小),则每个plot会放到最近的figure中。

fig1=plt.figure(num=1,figsize=(4,3))
plt.plot(np.random.rand(50).cumsum(),'k--')#被放在num=1的figure中

fig2=plt.figure(num=2,figsize=(8,6))
s=pd.Series(np.random.rand(20))
s.plot(kind='bar',edgecolor='b')#被放在num=2的figure中
plt.xticks(np.arange(0,22,2))#只对最近的figure作用

plt.figure+fig.add_subplot

用plt.figure创建fig。
ax1=fig.add_subplot(1,2,1)生成尺寸为1行2列的两个子图的第一个,subplot的标号从1开始。
可以利用plt.plot()在最近的子图中绘图,或者ax1.plot()在声明的ax1子图中绘图。

# 先创建figure,再add_subplot
fig=plt.figure(figsize=(10,4),facecolor='gray')

# 创建子图后plt.plot会绘制到距离最近的子图中
ax1=fig.add_subplot(1,2,1)#从1开始编号
plt.plot(np.random.rand(50),'k--.')
plt.plot(np.random.rand(50),'r-x')

# ax2.plot直接在子图后用图表创建函数直接生成图表
ax2 = fig.add_subplot(1,2,2)  # 第二行的右图
df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c'])
ax2.plot(df,alpha=0.5,linestyle='--',marker='x')

Python学习笔记——matplotlib pyplot绘制子图_第1张图片

plt.subplots+axes[0,1].plot()

用plt.subplots创建figure,并返回subplot对象的numpy数组。
利用数组索引在相应的子图中plot。

fig,axes = plt.subplots(1,3,sharex=True,sharey=True,figsize=(12,3))
# sharex,sharey:是否共享x,y刻度
plt.subplots_adjust(wspace=0.3,hspace=0)
# wspace,hspace:用于控制宽度和高度的百分比,subplot之间的间距

#在子图上plot,一维只需要一个索引参数,二维有两个,行列都从0开始编号。
axes[0].plot(np.random.rand(10),'b--')

#在daraframe上plot,ax标注子图
df=pd.DataFrame(np.random.rand(10,3),columns=list('abc'))
df.plot(kind='bar',ax=axes[2],grid=True,colormap='Blues_r',stacked=True,edgecolor='black')#stacled=True 堆叠柱状图

Python学习笔记——matplotlib pyplot绘制子图_第2张图片

subplots参数

subplots参数确定是否分别绘制子图,layout调整子图布局。

df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))
df = df.cumsum()
df.plot(style = '--.',alpha = 0.8,grid = True,figsize = (8,8),
       subplots = True,#是否分别绘制子图,False则绘制在一张图上
       layout = (2,2),#更改子图布局,按顺序填充
       sharex = False, sharey=True)#是否共享坐标
plt.subplots_adjust(wspace=0,hspace=0.2)#子图水平、垂直方向的间距

Python学习笔记——matplotlib pyplot绘制子图_第3张图片

你可能感兴趣的:(Python作图,Python)