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

如何移除pandas DataFrame直方图的Y轴刻度标签?

解决pandas.DataFrame.hist隐藏Y轴刻度标签的问题

你使用pandas.DataFrame.hist绘制DataFrame直方图时,希望隐藏Y轴的刻度标签,但之前尝试的方法无效。

你的现有代码:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'length': [1.5, 0.5, 1.2, 0.9, 3],
    'width': [0.7, 0.2, 0.15, 0.2, 1.1]
    }, index=['pig', 'rabbit', 'duck', 'chicken', 'horse'])

fig, ax = plt.subplots()
ax.axes.get_yaxis().set_visible(False)
hist = df.hist(bins=3, ax=ax)

当前生成的直方图中,两个子图的Y轴都显示刻度标签;你期望的效果是两个子图的Y轴无刻度标签(仅保留柱子和X轴)。

问题原因

df.hist()会为DataFrame的每一列自动创建独立的轴对象,即使你提前创建了单个ax,pandas也会调整布局生成对应数量的子轴,导致你提前设置的Y轴隐藏操作被覆盖,无法生效。

解决方案

在绘制完成后,遍历所有生成的轴对象,逐个设置隐藏Y轴刻度标签:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'length': [1.5, 0.5, 1.2, 0.9, 3],
    'width': [0.7, 0.2, 0.15, 0.2, 1.1]
}, index=['pig', 'rabbit', 'duck', 'chicken', 'horse'])

# 绘制直方图,获取所有轴对象(返回的是二维数组,需展平)
axes = df.hist(bins=3)

# 遍历每个轴,隐藏Y轴刻度标签
for ax in axes.flatten():
    # 隐藏Y轴刻度标签
    ax.yaxis.set_tick_params(labelleft=False)
    # 若需同时隐藏Y轴轴线,可添加以下代码
    # ax.spines['left'].set_visible(False)

plt.show()

这段代码会遍历直方图的所有子轴,通过yaxis.set_tick_params(labelleft=False)隐藏Y轴的刻度标签,完全符合你的期望效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:01:16