【问题标题】:matplotlib ticks position relative to axismatplotlib 刻度相对于轴的位置
【发布时间】:2013-01-20 14:30:32
【问题描述】:

matplotlib 中是否有一种方法可以设置标签和轴之间的刻度,因为它在 Origin 中默认设置?在线示例部分没有显示具有此功能的单个图。我喜欢在绘图区域之外有刻度,因为有时绘图会在内部隐藏刻度。

【问题讨论】:

标签: matplotlib


【解决方案1】:

我猜你需要这个:

通过获取 subplot 对象,你可以玩你的刻度

ax = plt.subplot(111)
yax = ax.get_yaxis()
plt.xticks(y_pos, city)
xtickNames=ax.set_xticklabels(city)
plt.setp(xtickNames, rotation=45, fontsize=10)

Following is the output with 45 degrees rotated ticks

【讨论】:

    【解决方案2】:

    要设置主要刻度:

    ax = plt.gca()
    ax.get_yaxis().set_tick_params(direction='out')
    ax.get_xaxis().set_tick_params(direction='out')
    plt.draw()
    

    设置所有刻度(次要和主要),

    ax.get_yaxis().set_tick_params(which='both', direction='out')
    ax.get_xaxis().set_tick_params(which='both', direction='out')
    plt.draw()
    

    同时设置 x 和 y 轴:

    ax = plt.gca()
    ax.tick_params(direction='out')
    

    axis level docaxes level doc

    要相对于刻度移动刻度标签,请使用pad。比较

    ax.tick_params(direction='out', pad=5)
    plt.draw()
    

    ax.tick_params(direction='out', pad=15)
    plt.draw()
    

    【讨论】:

    • 最后一个似乎工作正常。现在我必须找到一种方法将刻度标签移动相同的距离。事实上,我错误地将代码行 'ax.tick_params(which='both', direction='out', length=25, width=6)' 放了两次,令人惊讶的是,它使绘图的大小减少了所需的数量一个完美的情节。但我不知道为什么。
    • 您记得添加plt.draw() 吗?您可以使用pad kwarg 调整标签和刻度之间的间距。
    • 这里matplotlib.org/api/…;他们说不需要 plt.draw() 是修改序列以 show() 结尾;虽然我在检查 plt.draw() 的定义之前尝试过它:它并没有改变任何东西。 pad 是什么?
    • @user1850133 请参阅tick_param (matplotlib.org/api/…) 上的文档。它设置刻度线和标签之间的空间。
    • 没有选项允许使用 tick_params 定位刻度标签
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2019-08-25
    • 2013-01-04
    相关资源
    最近更新 更多