python数据可视化基础教学2

子图的使用

目录

一、多子图

二、多子图 add_axes

三、自定义子图


 一、多子图

    plt.subplots(row,col,constrained_layout=True)------返回的值为元组(画布,轴对象的数组)
    constrained_layout:对多子图设置启用约束布局

import matplotlib.pyplot as plt
import numpy as np


plt.rcParams['figure.figsize']=(6,4)
plt.rcParams['figure.dpi']=100
plt.rcParams['figure.facecolor']='#DCDCDC'
plt.rcParams['font.sans-serif']='SimHei'
# 对约束布局启用
plt.rcParams['figure.constrained_layout.use']=True


# 通过调用subplots返回元组,分别赋值给fig,axarr
fig,axarr=plt.subplots(2,2,constrained_layout=True,sharex=True)
# 设置画布的背景色,设置画布的大小
fig.set_facecolor('#66CDAA')

# 在第三个单元格中进行作图,y=x**3
plt.title('title1')
axarr[1,0].plot(np.arange(0,10)**3)
#plt.title('title2')

输出结果:

二、多子图 add_axes

在画布中添加多个子图,add_axes()

    1.add_axes():添加区域
    Matplotlib定义了一个axes类(轴域类),该类的对象被称为axes对象(即轴域对象),它指定了一个有数值范围限制的绘图区域。在一个给定的画布((figure)中可以包含多个axes对象,但是同一个axes对象只能在一个画布中使用。
    2D绘图区域(axes)包含两个轴(axis)对象
    语法:
    add_axes(rect, projection=None, polar=False, **kwargs)
    ·该方法用来生成一个axes轴域对象,对象的位置由参数rect决定
    rect 是位置参数,接受一个由4个元素组成的浮点数列表,形如[left, bottom, width, height),它表示添加到画布中的矩形域的左下角坐标(x, y),以及宽度和高度。


    rect:[left, bottom, width, height],左下角:0,0  右上角:1,1,
        水平方向(宽):0-1,left-width    left+width<=1
        垂直方向:(高):0-1,bottom-height  bottom+height<=1

import matplotlib.pyplot as plt
import numpy as np

# 创建指定大小和分辨率的图形对象
fig=plt.figure('f1',figsize=(6,4),dpi=100,linewidth=2,edgecolor='#FFA54F',facecolor='#CDBA96',frameon=True)

# 在画布中添加多个子图(坐标轴)
fig=plt.figure('f1',figsize=(6,4),dpi=100,linewidth=2,edgecolor='#FFA54F',facecolor='#CDBA96',frameon=True)
ax1=fig.add_axes([0,0,1,1],fc='#CDCDB4')
ax2=fig.add_axes([0.2,0.2,0.5,0.5],fc='#FFFFE0')
#输出结果如图1

# 在画布中添加多个子图(坐标轴),(left,bottom,width,height)
fig=plt.figure('f1',figsize=(6,4),dpi=100,linewidth=2,edgecolor='#FFA54F',facecolor='#CDBA96',frameon=True)
# 创建左下角子图
ax1=fig.add_axes([0,0,0.5,0.5],fc='#CDCDB4')
# 创建右下角子图
ax2=fig.add_axes([0.6,0,0.5,0.5],fc='#FFFFE0')
# 创建左上角子图
ax3=fig.add_axes([0,0.6,0.5,0.5],fc='#FFFFE0')
# 创建右上角子图
ax3=fig.add_axes([0.6,0.6,0.5,0.5],fc='#CDCDB4')
输出结果如图2

输出结果: 


图1

                                                                                                                  图2

三、自定义子图

    实现自定义单子图
        plt.subplot2grid(shape,col,rowspan,colspan)
        shape:(行,列),将画布划分为几行几列的区域
        col:(行索引,列索引)确定选择的作图区域
        rowspan:按照行进行合并
        colspan:按照列进行合并
     实现案例:

  1. 将第一行的第一列和第二列合并,作图气温折线图
  2. 第二行的第一列实现余弦图
  3. 在第二行的第二列实现正弦图
import numpy as np
import matplotlib.pyplot as plt

#先设定画布的尺寸和背景色
plt.rcParams['figure.figsize']=(8,6)
plt.rcParams['figure.dpi']=100
plt.rcParams['figure.facecolor']='#DCDCDC'
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

#准备数据,定义单子图作图
# 气温数据
day=np.array(['9月28日','9月29日','9月30日','10月1日','10月2日','10月3日','10月4日'])
y_gao=np.array([22,26,27,28,28,28,24])
y_di=np.array([14,16,18,18,19,18,19])


# 余弦曲线数据
data=np.linspace(-np.pi,np.pi)
y_cos=np.cos(data)

# 正弦曲线数据
y_sin=np.sin(data)

# 气温作图
plt.subplot2grid((2,2),(0,0),colspan=2,title='最近一周气温图')
plt.plot(day,y_gao)
plt.plot(day,y_di)

# 余弦线作图
plt.subplot2grid((2,2),(1,0),title='余弦线作图')
plt.plot(data,y_cos,lw=3,color='c',ls='--')

# 正弦线作图
plt.subplot2grid((2,2),(1,1),title='正弦线作图')
plt.plot(data,y_sin,marker='o',ms=5,mfc='r')

# 设置紧密布局
plt.tight_layout()

输出结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值