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

添加if语句后plt.show()无法显示绘图的问题排查

问题分析与解决

问题背景

原代码可正常绘制误差棒图表,但添加if-elif判断逻辑后,图表完全无法显示。需求是按分组后的TIT列是否为空,决定绘制TIT_HAR列还是TIT列。

错误原因

  1. 语法错误:elif: 是无效语法,Python中elif必须跟随判断条件,此处二选一的场景应该用else替代。语法错误会导致代码直接终止执行,根本到不了绘图环节。
  2. 代码冗余:if和elif块内大量重复代码,增加维护成本。
  3. 判断逻辑可能存在偏差:仅判断第一个分组的TIT列表长度是否为0,可能不符合实际业务需求(比如是否需要判断整个TIT列是否全为空?)。

修正后的代码

# 先确定要绘制的目标列
df3 = df2.groupby('XX')['TIT'].apply(list).reset_index(name='TIT')
target_col = 'TIT_HAR' if len(df3.loc[0, 'TIT']) == 0 else 'TIT'
print(target_col)

# 绘制误差棒,统一逻辑
ax.errorbar(df_combined['DAY'], df_combined[target_col], 
            yerr=df_combined_std[target_col], fmt='o', color='Black', linestyle='-')
ax.errorbar(df_combined_btch['DAY'], df_combined_btch[target_col], 
            yerr=df_combined_batch_std[target_col], fmt='o', color='Blue', linestyle='-')

# 统一设置图表属性
ax.legend(loc='upper right')
ax.set_xlabel('DAY', color='k')
ax.set_ylabel('TIT', color='k')
plt.show()

额外说明

如果你的实际需求是判断整个TIT列是否全为空,而不是第一个分组的列表长度,可以把判断逻辑改成:

target_col = 'TIT_HAR' if df2['TIT'].isnull().all() else 'TIT'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:40:47