如何避免条形图注释与左 y 轴重叠?

时间:2021-06-29 17:22:54

标签: python pandas matplotlib

bar chart example

我正在制作一系列这样的图表。负值在左边有注释,正值在右边有注释。我想保持这种方式,但负面注释几乎总是与 y 轴发生碰撞。负值因图表而异,因此我试图找出适用于所有这些的解决方案。如果有帮助,这是我用于注释的代码。非常感谢!

rects = ax.patches

# For each bar: Place a label
for rect in rects:
    # Get X and Y placement of label from rect.
    x_value = rect.get_width()
    y_value = rect.get_y() + rect.get_height() / 2

    # Number of points between bar and label. Change to your liking.
    space = 5
    # Vertical alignment for positive values
    ha = 'left'

    # If value of bar is negative: Place label left of bar
    if x_value < 0:
        # Invert space to place label to the left
        space *= -1
        # Horizontally align label at right
        ha = 'right'

    
    label = "$ " + str('{:,}'.format(x_value))


    # Create annotation
    plt.annotate(
        label,  # Use `label` as label
        (x_value, y_value),  # Place label at end of the bar
        xytext=(space, 0),  # Horizontally shift label by `space`
        textcoords="offset points",  # Interpret `xytext` as offset in points
        va='center',  # Vertically center label
        ha=ha)  # Horizontally align label differently for
    # positive and negative values.

0 个答案:

没有答案