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')

在这里插入图片描述

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 堆叠柱状图

在这里插入图片描述

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)#子图水平、垂直方向的间距

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值