如何为Matplotlib绘制的多子图分别添加独立标题?
为Matplotlib子图添加独立标题的解决方法
问题描述
我使用以下Matplotlib代码绘制了2行4列的直方图子图,每个子图对应指定城市的不同参数分布,请问如何为每个子图添加独立标题?
代码如下:fig, axs = plt.subplots(ncols=4, nrows=2, figsize=(16,8)) for city, nrow in zip(['City1', 'City1'], [0, 1]): df = data[(data.city==city)&(data.sdate.dt.year==2021)] for col, ncol in zip(['parameterX', 'parameterY', 'parameterZ', 'parameterH'], [0,1, 2,3]): axs[nrow, ncol].hist(df[col], bins=50)
解决方法
你可以通过调用子图对象的set_title()方法,结合城市名称和参数名生成独立标题。修改后的完整代码如下:
fig, axs = plt.subplots(ncols=4, nrows=2, figsize=(16,8)) for city, nrow in zip(['City1', 'City1'], [0, 1]): df = data[(data.city==city)&(data.sdate.dt.year==2021)] for col, ncol in zip(['parameterX', 'parameterY', 'parameterZ', 'parameterH'], [0,1, 2,3]): axs[nrow, ncol].hist(df[col], bins=50) # 为每个子图设置独立标题 axs[nrow, ncol].set_title(f"{city} - {col}") # 调整子图间距,避免标题与其他元素重叠 plt.tight_layout() plt.show()
关键说明
set_title()是Matplotlib轴(Axes)对象的内置方法,用于设置子图的标题,这里用f-string将城市名和参数名拼接成清晰的标题(例如City1 - parameterX)plt.tight_layout()会自动优化子图布局,防止标题、坐标轴标签等元素互相遮挡,提升图表的可读性
内容的提问来源于stack exchange,提问作者Ann
相关产品推荐
相关产品推荐

