gpt4 book ai didi

python - 如何拆分y轴标签并分别为每个部分着色?

转载 作者:行者123 更新时间:2023-12-03 21:15:32 25 4
gpt4 key购买 nike

ax.yaxis.get_major_ticks()允许我对每个标签进行不同的颜色编码。但是我没有拆分标签并用不同的颜色标记每个部分。

示例图像:A_B => 在蓝色和 _B 红色,类似 C_D => C 在蓝色和 D 在红色等

在循环所有刻度时,文本可用 get_text() ,但单独对每个部分进行颜色编码是不可能的。

这是水平堆叠条形图的示例图形表示:

image

最佳答案

this excellent post 借用一些代码,文本可以通过偏移框放在一起。

import matplotlib.pyplot as plt
from matplotlib.offsetbox import AnchoredOffsetbox, TextArea, HPacker

fig, ax = plt.subplots()

vals1 = [0.3, 0.5, 0.4, 0.2, 0.5]
vals2 = [0.2, 0.3, 0.2, 0.2, 0.1]
labels1 = ['A', 'B', 'CCCC', 'DDDDDD', 'E']
labels2 = ['B', 'CCCC', 'DDDDDD', 'E', 'F']
color1 = 'dodgerblue'
color2 = 'crimson'

ax.barh(range(len(vals1)), vals1, color=color1)
ax.barh(range(len(vals2)), vals2, left=vals1, color=color2)

ax.set_yticklabels([])
for i in range(len(labels1)):
boxes = [TextArea(text, textprops=dict(color=color))
for text, color in zip([labels1[i], '_', labels2[i]], [color1, 'black', color2])]
xbox = HPacker(children=boxes, align="right", pad=1, sep=1)
anchored_xbox = AnchoredOffsetbox(loc='center right', child=xbox, pad=0, frameon=False, bbox_to_anchor=(0, i),
bbox_transform=ax.transData, borderpad=1)
ax.add_artist(anchored_xbox)

plt.tight_layout()
plt.show()

resulting plot

关于python - 如何拆分y轴标签并分别为每个部分着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61077420/

25 4 0