gpt4 book ai didi

python - seaborn 中的条形图

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:33 27 4
gpt4 key购买 nike

我正在使用 seaborn,并试图让我的条形图看起来更好。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

x = ['One', 'Two', 'Three', 'Four', 'Five']
y = [2, 3, 0, 4.5, 4]
y2 = [0, 0, -5, 0, 0]

sns.axes_style('white')
sns.set_style('white')

b = sns.barplot(x,y,color='pink')
sns.barplot(x,y2, color='red')

for p in b.patches:
b.annotate(
s='{:.1f}'.format(p.get_height()),
xy=(p.get_x()+p.get_width()/2.,p.get_height()),
ha='center',va='center',
xytext=(0,10),
textcoords='offset points'
)

b.set_yticks([])
sns.despine(ax=b, left=True, bottom=True)

enter image description here

实际上,我在堆栈溢出时从另一个线程获取了用于标记条形图的代码。

我遇到的问题是,负条被标记为正侧。我还想去掉每个图形开头的零,并可能移动 x = ['One','Two','Three','Four','Five']中间是零,而不是在底部。

最佳答案

这是您只需要调用 1 次 barplot 并将注释放在 x 轴的正确一侧的逻辑

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

x = ['One', 'Two', 'Three', 'Four', 'Five']
y = [2, 3, -5, 4.5, 4]

sns.axes_style('white')
sns.set_style('white')

colors = ['pink' if _y >=0 else 'red' for _y in y]
ax = sns.barplot(x, y, palette=colors)

for n, (label, _y) in enumerate(zip(x, y)):
ax.annotate(
s='{:.1f}'.format(abs(_y)),
xy=(n, _y),
ha='center',va='center',
xytext=(0,10),
textcoords='offset points',
color=color,
weight='bold'
)

ax.annotate(
s=label,
xy=(n, 0),
ha='center',va='center',
xytext=(0,10),
textcoords='offset points',
)
# axes formatting
ax.set_yticks([])
ax.set_xticks([])
sns.despine(ax=ax, bottom=True, left=True)

enter image description here

关于python - seaborn 中的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com