gpt4 book ai didi

python - Seaborn/MatplotLib 轴和数据值格式 : Hundreds, 千和百万

转载 作者:行者123 更新时间:2023-12-01 00:19:12 24 4
gpt4 key购买 nike

我有一个问题,据我所知尚未解决。

我需要格式化我的轴和数据点,以使我的 Seaborn/Matplotlib 图表成为动态的。下面是我想要实现的目标的一个示例(通过 Keynote 完成,我使用对数刻度来使观点更清晰)。

最好的方法是什么?我看到的答案要么是 Ks 要么是 Ms,但从来没有同时是两者。我错过了什么吗?

enter image description here

现在我正在使用 FuncFormatter 选项

if options.get('ctype') == 'number':

df = df.loc[df[ycat2] >= 1].copy()
plt.figure(figsize=(14,7.5))
plot = sns.barplot(xcat1, ycat2, data=df, color='#00c6ff', saturation=1, ci=None)

sns.despine(top = True, right = True, left=True)
#plot.set_title('Instagram - Engagement Rate', fontweight='bold',y=1.04, loc = 'left', fontsize=12)

plot.yaxis.grid(True)
plot.yaxis.get_major_ticks()[0].label1.set_visible(False)
plot.yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:,}'.format(int(y))))
plot.set_xlabel('')
plot.set_ylabel('')
plot.tick_params(axis="x", labelsize=13)
plot.tick_params(axis="y", labelsize=13)

for i, bar in enumerate(plot.patches):

h = bar.get_height()

plot.text(
i,
h,
'{:,}'.format(int(h)),
ha='center',
va='bottom',
fontweight='heavy',
fontsize=12.5)


return plot.figure

最佳答案

Matplotlib 有一个 Engineering formatter专门用于此目的。您可以使用它来格式化轴(使用set_major_formatter())或格式化任何数字,使用EngFormatter.format_eng()

from matplotlib.ticker import EngFormatter
fmt = EngFormatter(places=0)

y = np.arange(1,10)
data = np.exp(3*y)
fig, ax = plt.subplots()
ax.set_xscale('log')
bars = ax.barh(y=y, width=data)
ax.xaxis.set_major_formatter(fmt)

for b in bars:
w = b.get_width()
ax.text(w, b.get_y()+0.5*b.get_height(),
fmt.format_eng(w),
ha='left', va='center')

enter image description here

关于python - Seaborn/MatplotLib 轴和数据值格式 : Hundreds, 千和百万,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59071835/

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