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

Matplotlib对数Y轴柱状图Y轴标签显示不全的解决方法

解决Matplotlib中Y轴标签被截断的问题

问题描述

如何让下图中的Y轴标签完整显示?Matplotlib截断了部分Y轴标签。

Y轴标签被截断的柱状图

代码示例

fig, ax = plt.subplots(1,1,figsize = (8,5))

sumsqrt_data ={'PI-ZN' : PI_ZN, 'PI-CHR' : PI_CHR, 'PI-AMIGO' : PI_AMIGO, 'PI-IMC' : PI_IMC, 'PI-SIMC' : PI_SIMC}

courses = list(['PI-ZN', 'PI-CHR', 'PI-AMIGO', 'PI-IMC', 'PI-SIMC'])
values = list([9975.229678280088, 16002.075925234263, 13022.883821302505, 11142.898237215246, 7633.880494079887])

ax.bar(courses, values)
ax.set_yscale('log')

解决方法

下面提供三种实用方案,任选其一即可解决标签截断问题:

1. 自动调整布局(推荐)

在绘图代码末尾调用plt.tight_layout(),它会自动调整图表元素的间距,确保所有标签完整显示:

fig, ax = plt.subplots(1,1,figsize = (8,5))

# 原有绘图代码
sumsqrt_data ={'PI-ZN' : PI_ZN, 'PI-CHR' : PI_CHR, 'PI-AMIGO' : PI_AMIGO, 'PI-IMC' : PI_IMC, 'PI-SIMC' : PI_SIMC}
courses = list(['PI-ZN', 'PI-CHR', 'PI-AMIGO', 'PI-IMC', 'PI-SIMC'])
values = list([9975.229678280088, 16002.075925234263, 13022.883821302505, 11142.898237215246, 7633.880494079887])
ax.bar(courses, values)
ax.set_yscale('log')

# 添加自动布局代码
plt.tight_layout()
plt.show()

2. 手动调整左边距

如果需要精准控制边距,可以使用plt.subplots_adjust()调整左侧留白,数值根据实际情况微调:

fig, ax = plt.subplots(1,1,figsize = (8,5))

# 原有绘图代码
sumsqrt_data ={'PI-ZN' : PI_ZN, 'PI-CHR' : PI_CHR, 'PI-AMIGO' : PI_AMIGO, 'PI-IMC' : PI_IMC, 'PI-SIMC' : PI_SIMC}
courses = list(['PI-ZN', 'PI-CHR', 'PI-AMIGO', 'PI-IMC', 'PI-SIMC'])
values = list([9975.229678280088, 16002.075925234263, 13022.883821302505, 11142.898237215246, 7633.880494079887])
ax.bar(courses, values)
ax.set_yscale('log')

# 手动调整左边距,left值可按需修改
plt.subplots_adjust(left=0.15)
plt.show()

3. 初始化画布时启用约束布局

创建画布时设置constrained_layout=True,Matplotlib会动态调整布局,避免元素重叠或截断:

# 初始化画布时开启约束布局
fig, ax = plt.subplots(1,1,figsize = (8,5), constrained_layout=True)

# 原有绘图代码
sumsqrt_data ={'PI-ZN' : PI_ZN, 'PI-CHR' : PI_CHR, 'PI-AMIGO' : PI_AMIGO, 'PI-IMC' : PI_IMC, 'PI-SIMC' : PI_SIMC}
courses = list(['PI-ZN', 'PI-CHR', 'PI-AMIGO', 'PI-IMC', 'PI-SIMC'])
values = list([9975.229678280088, 16002.075925234263, 13022.883821302505, 11142.898237215246, 7633.880494079887])
ax.bar(courses, values)
ax.set_yscale('log')

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:21:00