This question already has answers here:
Cleanest way to hide every nth tick label in matplotlib colorbar?

(4 个回答)


2年前关闭。




我正在尝试使用 DataFrame.plot.bar() 来绘制一系列数据。
plot = myData.plot.bar()
但是,有很多数据,因此 Xaxis 彼此重叠。
我正在寻找一种方法来只 显示第 n 个 xlabel 保留我所有当前的数据
我试过的:
我通读了 axes documentation 并找到了一些有用的功能。
我的尝试:
ticks = plot.get_xticks()
for tick in ticks:
    if tick%5 != 0:
        tick.set_visible(False)
问题:get_xticks() 返回位置,而不是实际刻度。所以 set_visible 会导致错误。
我需要什么帮助:
这是显示每个第 n 个 xlabel 的正确方法吗?如果是这样,我已经有了位置,我怎样才能获得实际的刻度,以便我可以设置每个位置的可见性。
如果这不是正确的方法,那么正确的方法是什么?

最佳答案

如果您只是想关闭刻度标签,则可以通过枚举 .get_xticklabels() 并关闭要隐藏的标签的可见性来实现。

import pandas as pd
import numpy as np
x = np.linspace(100, 500, 51, dtype=int)

mydata = pd.DataFrame({'A': np.histogram(np.random.normal(300, 100, 500), bins=x)[0]},
    index=x[:-1])

ax = mydata.plot.bar()

这是生成的图表
python - Pandas 绘图栏 : Show every nth xlabel-LMLPHP

要更改 x 轴标签,因此仅显示 5 分之一,请使用 enumerate 而不是标签位置的值来确定是否应显示。
for i, t in enumerate(ax.get_xticklabels()):
    if (i % 5) != 0:
        t.set_visible(False)

这产生了这个情节:
python - Pandas 绘图栏 : Show every nth xlabel-LMLPHP

关于python - Pandas 绘图栏 : Show every nth xlabel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56095446/

10-11 19:33