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

Python中ax[0]子图无法显示问题排查求助

问题分析与修复方案

你的代码问题出在直接重新赋值子图对象:plt.subplots(1,2)已经创建了两个子图对象并存储在ax数组中,但你随后用ax[0] = sns.barplot(...)覆盖了原来的ax[0]对象,导致第一个子图的内容无法正确渲染。

Seaborn的绘图函数需要通过ax参数指定要绘制的目标子图,而不是重新赋值子图变量。

修正后的代码

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 创建测试数据框
test = pd.DataFrame({
    'genre': ['var1','var2'],
    'left plot': [1,3],
    'right plot': [2,4]})

# 创建包含两个子图的画布
fig, ax = plt.subplots(1,2)   # 1行2列的子图布局
fig.set_figheight(5)
fig.set_figwidth(8) 

# 在指定子图上绘制图表
sns.barplot(x='left plot', y='genre', data=test, ax=ax[0])  # 通过ax参数指定第一个子图
sns.barplot(x='right plot', y='genre', data=test, ax=ax[1])  # 指定第二个子图
    
# 显示图表
plt.show()

关键修改说明

  • 删除了ax[0] =和ax[1] =的赋值语句,改为在sns.barplot()中添加ax=ax[0]/ax=ax[1]参数
  • 这样可以让Seaborn直接在plt.subplots()创建的原始子图对象上绘图,避免覆盖子图引用导致的显示问题

内容的提问来源于stack exchange,提问作者Minh Chau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:44:55