我正在绘制一个海运条形图中的数据。我想从我的pandas dataframe中标记一些东西到条形图中。我已经弄清楚了标记部分(请参阅下面的代码复制),但我仍然想将其转换为科学记数法。
import pandas as pd
d = {'name': ['experiment1','experiment2'], 'reads': [15000,12000], 'positiveEvents': [40,60]}
df = pd.DataFrame(d)
df['proportianPositive'] = df['positiveEvents']/df['reads']
p = sns.barplot(data=df,x='name',y='positiveEvents', palette = 'colorblind', alpha =0.8)
p.bar_label(p.containers[0],labels=df.proportianPositive, padding = -50, rotation=90)
plt.show()
结果:
如何将df.proportianPositive转换为科学记数法,以便它显示在条形图上?
2条答案
按热度按时间a1o7rhls1#
labels=
取代fmt=
,因此它们不能一起使用。p.containers[0]
→<BarContainer object of 2 artists>
,这是描述条形图的属性。fmt='%.3E'
labels=
的对象pandas.Series
的情况下:labels = df['proportianPositive'].map(lambda v: f'{v:.3E}')
。参见Difference between map, applymap and apply。labels = [f'{v:.3E}' for v in df.proportianPositive]
matplotlib.pyplot.bar_label
的其他详细信息和示例,请参见How to add value labels on a bar chart。一米十一秒
一米十一分
gwbalxhn2#
这可能是因为
labels
参数覆盖了fmt
参数。尝试格式化标签:输出: