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
相关产品推荐
相关产品推荐

