我绘制的是每年的乘客人数,但汇总数据以百万为单位,我希望图表仅显示X.X百万
这就是代码:
Pax_Major=MajorCarriers.groupby(by=["YEAR"])["PASSENGERS"].sum().reset_index().sort_values(["YEAR"])
然后我将此设置为plot(我从一个在线示例中找到的代码)
fig, ax = plt.subplots(figsize=(13.33,7.5), dpi = 96)
bar1=ax.bar(Pax_Major["YEAR"], Pax_Major["PASSENGERS"], width=0.6)
ax.set_xlabel('', fontsize=12, labelpad=10)
ax.xaxis.set_label_position("bottom")
ax.xaxis.set_major_formatter(lambda s, i : f'{s:,.0f}')
ax.xaxis.set_tick_params(pad=2, labelbottom=True, bottom=True, labelsize=12, labelrotation=0)
labels = ["97", "98", "99", "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22"]
ax.set_xticks(Pax_Major['YEAR'], labels)
ax.set_ylabel('Passengers per year', fontsize=12, labelpad=10)
ax.yaxis.set_label_position("left")
ax.yaxis.set_major_formatter(lambda s, i : f'{s:,.0f}')
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
ax.yaxis.set_tick_params(pad=2, labeltop=False, labelbottom=True, bottom=False, labelsize=12)
ax.bar_label(bar1, labels=[f'{e:,.0f}' for e in Pax_Major['PASSENGERS']], padding=3, color='black', fontsize=8)
colours = ["#bbdefb","#2196f3"]
cmap = mpl.colors.LinearSegmentedColormap.from_list("colour_map", colours, N=256)
norm = mpl.colors.Normalize(Pax_Major['PASSENGERS'].min(), Pax_Major['PASSENGERS'].max())
bar1 = ax.bar(Pax_Major['YEAR'], Pax_Major['PASSENGERS'], color=cmap(norm(Pax_Major['PASSENGERS'])), width=0.6, zorder=2)
这就是我得到的:
但是,而不是,即65,073,314,271在1997年,我想有6510万显示在图表中。
--谢谢!
1条答案
按热度按时间sqxo8psd1#
这是设置标签的行。更改生成标签的方式,如下所示:
f'{(e / 1000000):,.1f} million'
是一个格式字符串。{}
中:
之前的所有内容都将被计算,然后:,.1f
指定使用'1,000.00'而不是'1.000,00'格式,并四舍五入到小数点后1位。这将与格式字符串的其余部分结合在一起,这只是单词“million”。