繁体   English   中英

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

[英]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水平对齐的选项,使用ma多对齐文本。 我也使用了 ha 并使用position参数进行了调整。 它似乎是对齐的。 可能这也有助于设计和使用它以获得正确的格式。 参考这里(看其他参数)

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

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()

最后输出如下所示:
在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM