【问题标题】:Matplotlib: Display Minor Ticks and Major Ticks at the Same Axis LocationMatplotlib:在同一轴位置显示次要刻度和主要刻度
【发布时间】:2020-01-15 13:25:55
【问题描述】:

我有一个包含主要和次要蜱虫的情节。这是一个分组条形图,我不想要描述每个类别的图例,但希望每个类别都显示在小刻度中。然后我希望每个组的名称都包含在主要刻度中。

我可以在某种程度上做到这一点,但主要刻度似乎覆盖了同一位置的次要刻度。如何关闭此功能?

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(
    {
        0: [84, 41],
        1: [0, 0],
        2: [18.5, 3.5],
        3: [65.5, 124],
        4: [0.5, 0]
    },
    index = ['A', 'B']
)

ax = df.plot.bar(
    rot=0,
    legend=False,
    color=['gray', 'red', 'green', 'lightblue', 'darkblue',],
)

labels = df.unstack().index
label_x, label_mode = [], []

for rect, idx in zip(ax.patches, labels):
    print(rect, idx)
    label_mode.append(idx[0])
    label_x.append(rect.xy[0] + (rect.get_width() * 0.5))

ax.set_xticklabels(['A', 'B'])
ax.set_xticks(label_x, minor=True)
ax.set_xticklabels(label_mode, minor=True)
ax.tick_params(axis='x', which='minor', length=0)

ax.tick_params(axis='x', which='major', length=10, width=0)

【问题讨论】:

    标签: python pandas matplotlib plot


    【解决方案1】:

    这其实很简单。它是单个参数remove_overlapping_locs 传递给xaxis 对象。

    ax.xaxis.remove_overlapping_locs = False
    

    有关更多详细信息,请参阅 matplotlib API 更改3.1.0。

    【讨论】:

    • 我很高兴这是可以被发现的。我fought当时很难有办法阻止被删除。
    • @ImportanceOfBeingErnest 恕我直言,这是完全正确的决定,谢谢!它为我节省了很多摆弄。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多