Task02 2.1 Matplotlib绘图包介绍

重点学习了子图和不规则子图的绘制

subplot()

也可用于简单的不规则子图绘制,但更推荐subplot2gird()

import random

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

if __name__ == '__main__':
    data1 = pd.read_excel('data1.xlsx')
    data2 = pd.read_excel('data2.xlsx')
    data3 = pd.read_excel('data3.xlsx')
    
    data1.dropna(inplace=True)  # 清理数据,移除NaN行和无效数据
    pd.set_option('display.max_rows', None)  # None 表示显示所有行
    pd.set_option('display.max_columns', None)  # None 表示显示所有列
    plt.rcParams['font.sans-serif'] = ['SimHei']

    ax1 = plt.subplot(2, 2, 1)
    plt.bar(data1.loc[2:, '年 龄'], data1.loc[2:, '人口数'])
    plt.xticks(rotation=45)  # 旋转角度为 45 度
    ax1.set_title('分年龄段人数')
    plt.ylabel('人口')
    plt.xlabel('年龄段')

    ax2 = plt.subplot(2, 2, 2)
    plt.plot(data2['年 份'], data2['男比重'], label='男比重')
    plt.plot(data2['年 份'], data2['女比重'], label='女比重')
    plt.legend()
    ax2.set_title('分年度男女比')
    plt.xlabel('年份')
    plt.ylabel('性别比重')

    ax3 = plt.subplot(2, 2, 3)
    plt.plot(data3['年 份'], data3['自然增长率'])
    ax3.set_title('分年人口自然增长率')
    plt.xlabel('年份')
    plt.xlabel('人口自然增长率')

    ax4 = plt.subplot(2, 2, 4)
    Y = [abs((x - 2004)/3 * np.random.randint(0, 10)) for x in range(1990, 2006)]
    X = list(range(1990, 2006))
    Z = [y * random.randint(1, 5) for y in Y]
    plt.scatter(X, Y, c=Z, cmap='cividis')
    # 添加颜色条
    cbar = plt.colorbar()
    cbar.set_label('血压')  # 颜色条标签
    plt.title('随机生成的数据')
    plt.xlabel('出生年份')
    plt.ylabel('体重')

    plt.tight_layout()  # 调整子图布局,防止标题重叠
    plt.show()

subplots()

使用方法与subplot()略有不同,功能相似

import matplotlib.pyplot as plt

# 创建一个包含两个子图的画布
fig, axs = plt.subplots(1, 2, figsize=(10, 5), dpi=100)

# 在第一个子图上添加绘图元素
axs[0].plot([1, 2, 3], [4, 5, 6])
axs[0].set_title("Subplot 1")
axs[0].set_xlabel("X Label")
axs[0].set_ylabel("Y Label")

# 在第二个子图上添加绘图元素
axs[1].scatter([1, 2, 3], [7, 8, 9], color='r')
axs[1].set_title("Subplot 2")
axs[1].set_xlabel("X Label")
axs[1].set_ylabel("Y Label")

# 调整子图之间的间距
plt.tight_layout()

# 显示绘图
plt.show()

subplot2grid()

Matplotlib 中的 subplot2grid() 函数可以实现对不规则多子图的绘制,即在当前画布对象上 绘制网格(grid),网格可用于在特定位置绘制布局和大小不同的子图对象。subplot2grid() 函 数的语法格式如下。

 subplot2grid(shape, location, rowspan/colspan)

该函数的第 1 个参数 shape 规定了的网格的行数和列数,第 2 个参数 location 决定了子图 在网格内的行号和列号,第 3 个参数为 rowspan colspan,它们分别规定了每个子图向下跨越的行数和向右跨越的列数,也就实现了大小不一的子图的绘制。示例代码如下。

1. import matplotlib.pyplot as plt

2. fifig = plt.fifigure()

3. ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)

4. ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)

5. ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)

6. ax4 = plt.subplot2grid((3, 3), (2, 0))

7. ax5 = plt.subplot2grid((3, 3), (2, 1))


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


if __name__ == '__main__':
    data1 = pd.read_excel('data1.xlsx')
    data2 = pd.read_excel('data2.xlsx')
    data3 = pd.read_excel('data3.xlsx')

    data1.dropna(inplace=True)  # 清理数据,移除NaN行和无效数据
    pd.set_option('display.max_rows', None)  # None 表示显示所有行
    pd.set_option('display.max_columns', None)  # None 表示显示所有列
    plt.rcParams['font.sans-serif'] = ['SimHei']

    fig = plt.figure()
    ax1 = plt.subplot2grid((4, 4), (0, 0), rowspan=4, colspan=1)
    ax2 = plt.subplot2grid((4, 4), (0, 1), colspan=3)
    ax3 = plt.subplot2grid((4, 4), (1, 1), rowspan=2, colspan=2)
    ax4 = plt.subplot2grid((4, 4), (1, 3), rowspan=2, colspan=1)
    ax5 = plt.subplot2grid((4, 4), (3, 1), rowspan=1, colspan=3)

    plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值