如何使 y 轴标签在 seaborn 中居中对齐?

How to make y-axis labels center-aligned in seaborn?

我在 seaborn 中生成了两个共享 y 轴的图。我想知道如何使共享的 y 轴标签居中对齐。我正在寻找一些想法和改进。剧情附后。

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
import string
import random

labels = []

for i in range(10):
   labels.append(''.join(random.choices(string.ascii_lowercase, k=4)))
   labels.append(''.join(random.choices(string.ascii_lowercase, k=7)))     
   
score = np.abs(np.random.randn(20))

fig, axes = plt.subplots(1,2 , figsize=(5,5 ),  sharey=True )

for ii in range(2):   
    ti = sns.barplot(y=[j for j in range(len(score))],x=score, ax=axes[ii],                         
                      orient='h' )    
    ti.set_yticklabels(labels)            
    if ii ==0:
         ti.invert_xaxis()
         ti.yaxis.tick_right()      
            
fig.tight_layout(w_pad=0, pad=1)
plt.show()
    

ti.set_yticklabels(labels) 具有使用 ha、multi-align 文本与 ma 水平对齐的选项。我已经使用了 ha 并使用 position 参数进行了调整。好像对齐了可能这也有助于设计和使用它以获得正确的格式。 Reference here(看其他参数)

以下仅是部分更改的更新代码段:

for ii in range(2):   
    ti = sns.barplot(y=[j for j in range(len(score))],x=score, ax=axes[ii],                         
                      orient='h')    
    ti.set_yticklabels(labels, ha="center", position=(1.2,0)) # ha and position adjustments.           
    if ii ==0:
         ti.invert_xaxis()
         ti.yaxis.tick_right()     
            
plt.tight_layout(w_pad=0, pad=2.5) # Some padding adjustments.
plt.show()

最终输出如下所示: