当我向条形图添加垂直文本标签时seaborn
,标签会偏移到中心左侧,如下所示:
我怎样才能将标签稍微向右移动,以便它们恰好居中?
数学家:
import matplotlib.pyplot as plt
import seaborn as sns
percentages = [8.46950845e+00, 1.58712232e+01, 2.13963086e+01, 2.33865318e+01, 2.04539820e+01, 1.41358888e+01, 7.79622697e+00, 3.49245775e+00, 1.28729140e+00, 3.91327891e-01, 9.80073446e-02, 2.02461563e-02, 3.46222120e-03, 4.92413036e-04, 5.82500571e-05, 5.70562340e-06, 4.59952409e-07, 3.05322729e-08, 1.57123083e-09, 4.80936609e-11]
plt.figure(figsize=(9, 5), dpi=100)
ax = sns.barplot(
x = range(1, len(percentages) + 1),
y = percentages,
legend=False,
hue = range(1, len(percentages) + 1),
palette="GnBu_d"
)
plt.text(0, percentages[0]/2, "Additive", ha="center", va="center", rotation=90, fontsize=10, weight="bold")
plt.text(1, percentages[1]/2, "Additive x Additive", ha="center", va="center", rotation=90, weight="bold")
plt.show()
您的文本已正确居中,但是您仅使用基线上方的字母,这使得它看起来好像没有居中。
请参阅此处有关 matplotlib 对齐模式的描述:
因此,您要寻找的是
va='center_baseline'
,并且这适用于没有旋转的水平文本/条:不幸的是,即使有,也不支持此功能
ha
rotation=90
。一种选择是手动添加一个小的偏移量,这取决于图形尺寸:
例子:
请注意红色如何
bdpdjy
正确居中,但不再是带有手动偏移的蓝色。seaborn 条形图中的条形以整数位置 1、2、3 为中心,而不是 0、1、2。我们可以做的是找到
p.get_x() + p.get_width()/2
图中每个块的条形的实际中心位置,然后使用这些坐标进行文本放置。