You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Matplotlib绘图如何在同一窗口同时展示两张图表

错误点梳理
  • 缺少pandas依赖导入:代码中调用pd.read_csv()但没有提前导入pandas库,运行会直接抛出名称错误
  • 传参逻辑完全失效:main函数传入的file_name被内部硬编码的文件路径直接覆盖,外部传参没有任何作用,同时重复调用了两次main函数,会重复执行两次绘图逻辑,完全不符合需求
  • 错误创建多个画布:两次调用plt.figure()会生成两个独立的窗口,自然无法把两张图放在同一个窗口展示
  • subplot参数配置错误:原代码用131/132对应1行3列的子图位置,仅需两张图的场景下应该配置为1行2列,参数改为121/122即可
  • 属性赋值逻辑错误:xlabel/ylabel的赋值放在第二段绘图代码之后,只会对第二张子图生效,第一张子图不会显示轴标签;中途写的无括号的plt.show属于无效代码,没有任何作用
修正后可直接运行的代码
import matplotlib.pyplot as plt
from matplotlib import interactive
import numpy as np
import pandas as pd

def main():
    # 读取并绘制第一张招生数据图
    df_enroll = pd.read_csv("College Enrollments.csv")
    department = df_enroll['Department']
    enrollment_count = df_enroll[' Enrollment count']
    
    # 全局仅创建一个画布,两张子图都挂载在这个画布下
    plt.figure(figsize=(16, 6))
    # 定位到1行2列的第一个子图位置
    plt.subplot(121)
    plt.bar(department, enrollment_count)
    plt.title('College Enrollments')
    plt.yticks(np.arange(0, 4001, 500))
    plt.xticks(rotation=90)
    plt.xlabel('Department')
    plt.ylabel('Enrollment count')

    # 读取并绘制第二张教师数据图
    df_faculty = pd.read_csv("CS Faculty.csv")
    professor = df_faculty['CS Professor']
    yoe = df_faculty['Years of Experience']
    
    # 定位到1行2列的第二个子图位置
    plt.subplot(122)
    plt.bar(professor, yoe)
    plt.title('CS Faculty')
    plt.yticks(np.arange(0, 31, 5))
    plt.xticks(rotation=90)
    plt.xlabel('CS Professor')
    plt.ylabel('Years of Experience')

    # 保留原要求不可修改的交互和展示逻辑
    interactive(True)
    plt.show()

if __name__ == '__main__':
    main()

运行后会生成一个窗口,内部左右并排展示两张独立图表,符合作业要求。如果你的作业要求必须保留原代码末尾的x_axis/y_axis变量赋值逻辑,只要将每个子图对应的轴标签先赋值给对应变量再调用plt.xlabel(x_axis)即可。

内容的提问来源于stack exchange,提问作者Phillip Hackley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:15:03