pandas 在双向条形图中居中格式化的Y标记

r1wp621o  于 2023-04-28  发布在  其他
关注(0)|答案(1)|浏览(112)

我生成了这个条形图:

在@Ken Myers here的帮助下。我的问题是,如何将格式化的y刻度标签(如volumeMAP等)居中,这些标签用作绘制的变量水平的标题。我还认为我并不真正需要每个图上的y刻度,尤其是粗体标题变量名称。
或者,如果我能把右边的图更多地移到左边,那也会有帮助。
我在想,如果我可以为每三个y轴标签添加填充,我就可以将它们移动到中间,但我不确定如何指定。

h79rfbju

h79rfbju1#

您可以通过稍微更改代码将所有标签移动到两个图之间。首先,我删除了rjust(),这样就不会在标签中添加空格。然后,在set_ticklabels()中,我添加了ha='centerposition=(1.15,0),这将根据需要对齐文本。如果你想将标签稍微向左或向右移动,你可以改变1. 15...希望这是你要找的...

# Showing only part of changed code from previous answer

#   ....

axes[0].yaxis.tick_right()
axes[0].set_yticks(range(len(fluid_vp_1_2)))
maxWordLength = fluid_vp_1_2['level'].apply(lambda x: len(x)).max()
#formattedyticklabels = [r'$\bf{'+f"{t.rjust(maxWordLength)}"+r'}$' 
#                        if t in variableNames else t.rjust(maxWordLength) for t in fluid_vp_1_2['level']]
formattedyticklabels = [r'$\bf{'+f"{t}"+r'}$' 
                        if t in variableNames else t for t in fluid_vp_1_2['level']]
axes[0].set_yticklabels(formattedyticklabels, ha='center', position=(1.15, 0))
    
fig.tight_layout()

plt.show()

选项2

如前所述,如果variableNames中的字段中有空格,则会将其删除。为了避免这种情况,我使用响应here来更改答案....
首先,在上面的代码中,您需要在两个位置将history更改为Medical History-在字符串s和数组variableNames中。然后,不要使用formattedticklables,只需将set_yticklables()更改为fluid_vp_1_2['level'],然后将其粘贴到variableNames中的标签label.set_fontweight('bold')
更新代码:

#formattedyticklabels = [r'$\bf{'+f"{t.rjust(maxWordLength)}"+r'}$' 
#                        if t in variableNames else t.rjust(maxWordLength) for t in fluid_vp_1_2['level']]
#axes[0].set_yticklabels(formattedyticklabels, ha='center', position=(1.15, 0))

axes[0].set_yticklabels(fluid_vp_1_2['level'], ha='center', position=(1.15, 0))
for label in axes[0].get_yticklabels():
    if label.get_text() in variableNames:
        label.set_fontweight('bold')

这将给予下面的情节…

相关问题