【问题标题】:How to get the step unit of a plot using matplotlib?如何使用 matplotlib 获取绘图的步长单位?
【发布时间】:2021-07-17 20:55:14
【问题描述】:
 ax.text(x=v+ ?? , y= i+addition, s= str(v), color='black')

我创建了各种类型的水平条形图,现在我想在每个图中的每个条形旁边添加文本。在 ??我想在每个绘图的步长单位中添加四分之一,我要在其中添加文本。例如,如果步长单位是 80,那么它应该是 20。 ??是条与文本之间的水平距离。它不可能是恒定的,因为我基本上是在创建许多不同比例的地块。有什么建议吗??

我的问题基本上是是否有一种方法可以让我获得绘图的步长单位,类似于获得 xlim 和 ylim?我假设默认情况下会自动计算步长单位。

Easy clarification of the question

【问题讨论】:

  • 最简单的方法是在字符串前加一个空格:ax.text(x=v, y= i, s=f' {v:.0f}', ha='left', ca='center', color='black')。 (对于垂直情况,您可以在字符串末尾添加换行符。)

标签: python pandas matplotlib data-visualization


【解决方案1】:

您可能希望使用ax.annotate (doc) 来指定文本相对于屏幕空间数据空间中的点的偏移量。例如:

import matplotlib.pyplot as plt
import numpy as np

fig, (ax1, ax2) = plt.subplots(2, constrained_layout=True)

vals = np.arange(5) + 1


def bar_and_label(ax, y, width, text):
    ax.barh(y, width)
    ax.annotate(
        text=text,
        xy=(width[0], 0),
        xytext=(5, 0),
        textcoords="offset points",
        va="center",
        ha="left",
    )


bar_and_label(ax1, range(len(vals)), vals, "a")
bar_and_label(ax2, range(len(vals)), vals * 100, "b")

这样可以确保无论数据的比例是多少,条形图和标签之间的空间始终相同!


您可能还对 mpl3.4 中的新功能 ax.bar_label (doc) 方法感兴趣。

【讨论】:

  • 谢谢解答,我试试看!
猜你喜欢
  • 2019-04-12
  • 2022-01-02
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2012-10-29
  • 2023-04-08
  • 2011-12-21
  • 2012-05-19
相关资源
最近更新 更多