繁体   English   中英

pandas matplotlib 将条形标记为百分比

[英]pandas matplotlib labels bars as percentage

我目前使用 dataframe 制作了一个条形图,该条形图用它们的值标记,输出如下:

ax = drill.plot.bar()
for container in ax.containers:
    ax.bar_label(container)

是的

我想将值格式化为百分比。 如何在不彻底修改用于生成图表的代码的情况下做到这一点?

也许您可以在绘制图表之前将该列转换为百分比值。
例如:

df = pd.DataFrame({'lab':['A', 'B', 'C'], 'val':[10, 30, 20]})
df['val'] = df['val'].apply(lambda x: x/df['val'].sum())
ax = df.plot.bar(x='lab', y='val', rot=0)
for container in ax.containers:
    ax.bar_label(container)

print(df)
  lab  val
0   A   10
1   B   30
2   C   20

在此处输入图像描述

如果您想将百分比作为 y 轴的标签,您可以使用来自matplotlib.tickermtick.PercentFormatter()像这样(来自@perpetualstudent 的数据):

import pandas as pd
import matplotlib.ticker as mtick

df = pd.DataFrame({'lab':['A', 'B', 'C'], 'val':[10, 30, 20]})
ax = df.plot.bar(x='lab', y='val', rot=0)
for container in ax.containers:
    ax.bar_label(container)
    ax.yaxis.set_major_formatter(mtick.PercentFormatter())

Output:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM