常用图像绘制在线实验闯关-第7关:子图绘制


任务描述

本关任务:读取 “各站点各时刻进出站客流数据.xlsx”,将 155、157、151、123 四个站点在各时刻的进站客流,用一个 2*2 的子图,绘制其线性图。

相关知识

为了完成本关任务,你需要掌握:1.如何读取数据和切片,2.如何绘制子图。

读取数据并切片
 
 
  1. data=pd.read_excel('各站点各时刻进出站客流数据.xlsx')
  2. #获取站点155,157,151,123各时刻进站人数
  3. intf155=data.loc[data['站点编号']==155,['站点编号','时刻','进站人数']]

输出:

,

绘制子图

子图是指在同一个绘图界面上,绘制不同类型的图像。通过子图,可以在同一个界面上实现多种不同类型图像之间的比较,从而提高了数据的可读性和可视化效果。subplot()函数,其调用形式为将figure画布分成a行b列矩阵形式的方格图形,并在第c个方格图形(按行顺序数)上绘制图像。 示例如下:

 
 
  1. #绘制2*2的子图
  2. #绘制第一个子图,站点155
  3. plt.subplot(2,2,1)
  4. #定义x1,y1
  5. x1=intf155.iloc[:,1]
  6. y1=intf155.iloc[:,2]
  7. #绘制线性图
  8. plt.plot(x1,y1)
  9. #设置x,y轴标签
  10. plt.xlabel('时刻')
  11. plt.ylabel('进站人数')
  12. #第一个子图标题
  13. plt.title('155各时刻进站客流')

输出:

,

编程要求

根据提示,在右侧编辑器补充代码,并绘制出子图。

测试说明

平台会对你编写的代码进行测试:

import matplotlib.pyplot as plt
import pandas as pd
import warnings
 
plt.rcParams['font.sans-serif']=['simhei']
plt.rcParams['font.family']='sans-serif'
warnings.filterwarnings('ignore')
 
#********** Begin *****
#读取“各站点各时刻进出站客流数据.xlsx”,获得 155、157、151、123 
#四个站点在各时刻的进站客流,用一个 2*2 的子图,绘制其线性图。
def plot_data(station_id, subplot_id):
    intf = data.loc[data['站点编号']==station_id,['时刻','总进站客流']]
    plt.subplot(2,2,subplot_id)
    plt.plot(intf.iloc[:,0], intf.iloc[:,1])
    plt.xlabel('时刻')
    plt.ylabel('总进站客流')
    plt.title(f'{station_id}各时刻进站客流线性图')
    plt.tight_layout()
 
data = pd.read_excel('各站点各时刻进出站客流数据.xlsx')
plt.figure(figsize=(6,4))
 
def test():
    plot_data(155, 1)
    plot_data(157, 2)
    plot_data(151, 3)
    plot_data(123, 4)
    plt.savefig("学员4.7/4个站点各时刻进站客流子图.png")
 
#最后,采用plt.savefig函数保存图片,文件路径如下:"学员4.7/4个站点各时刻进站客流子图.png"
#********** End **********#
 

猜你喜欢

转载自blog.csdn.net/Joy19981127/article/details/134758502