【问题标题】:Manually place the ticks on x-axis, at the beginning, middle and end - Matplotlib手动将刻度放在 x 轴的开始、中间和结束处 - Matplotlib
【发布时间】:2022-12-03 00:13:47
【问题描述】:

有没有办法始终将 Matplotlib 的 x 轴上的刻度放置在轴的开始、中间和末端,而不是 Matplotlib 自动放置它们?例如,我有一个如下所示的图。 matplotlib plot 有没有办法总是在最开始放置 25,在中间放置 80,在最后放置 95? 这是我在 Jupyter Notebook 中尝试的代码:


import matplotlib.pyplot as plt
def box(ax_position, percentile_values, label, label_position):
    fig = plt.figure(figsize = (10, 2))
    ax1 = fig.add_axes(ax_position)
    ax1.set_xticks(percentile_values)
    ax1.tick_params(axis="x",direction="out", pad=-15, colors='b')
    ax1.set_yticks([])
    ax1.text(*label_position, label, size=8)
    plt.show()

box((0.4, 0.5, 0.4, 0.1), (25,80,95),  "CA",(0.01, 1.3))

在 percentile_values 中传递的值的数量将始终为 3,并且这 3 个始终需要放在开头、中间和结尾 - 但 Matplotlib 会自动根据数值放置这些刻度。这就是我要找的: what I need

我尝试使用 matplotlib.ticker.FixedLocator,但这对我没有帮助,虽然我只能显示 3 个刻度,但刻度的位置由 Matplotlib 选择,而不是放在开头、中间和结尾。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您需要将 set_xticks() 拆分为只有条目数 - (0,1,2),并使用 set_xticklables() 提供您要显示的文本 - (25,80,95)。请注意,我使用了 numpy 的 linspace 来获取基于 percentile_value 长度的数字列表。另外,我已经删除了pad=-15,因为你已经表示你想要这些数字以下蜱虫。希望这就是您要找的。

    import matplotlib.pyplot as plt
    import numpy as np
    def box(ax_position, percentile_values, label, label_position):
        fig = plt.figure(figsize = (10, 2))
        ax1 = fig.add_axes(ax_position)    
        ax1.set_xticks(np.linspace(0,len(percentile_values)-1,len(percentile_values)))
        ax1.set_xticklabels(percentile_values)
        ax1.tick_params(axis="x",direction="out", colors='b')
        ax1.set_yticks([])
        ax1.text(*label_position, label, size=8)
        plt.show()
    
    box((0.4, 0.5, 0.4, 0.1), (25,80,95),  "CA",(0.01, 1.3))
    

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 2018-02-23
      • 1970-01-01
      • 2021-04-03
      • 2014-03-12
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多