手动将记号放置在x轴的开始、中间和结束位置- Matplotlib

xytpbqjk  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(117)

有没有一种方法可以总是将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选择的,而不是放置在开始,中间和结束。

qpgpyjmq

qpgpyjmq1#

您需要将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))

相关问题