gpt4 book ai didi

python - 条形图,带有单独的正值和负值条形图

转载 作者:行者123 更新时间:2023-12-04 03:30:42 30 4
gpt4 key购买 nike

我有一个包含正值和负值的数据框。我想显示一个显示两个条形的条形图,一个条形显示正值的百分比,另一个条形图显示负值的百分比。

dummy = pd.DataFrame({'A' : [-4, -3, -1, 0, 1, 2, 3, 4, 5], 'B' : [-4, -3, -1, 0, 1, 2, 3, 4, 5]})
less_than_0 = dummy['A'][dummy['A'] < 0]
greater_than_0 = dummy['A'][dummy['A'] >= 0]

我能够拆分正值和负值。我用 seaborn 试过了。

sns.barplot(dummy['A'])

但正面和负面都出现在单个柱中。这个我也试过

sns.barplot(less_than_0)
sns.barplot(greater_than_0)

有什么方法可以显示 2 个条形图,一个表示正值的百分比,另一个表示负值的百分比?

最佳答案

这不是最优雅的解决方案,但您可以创建一个包含两列的新 DataFrame:labels,其中包含您要在条形图的 x 轴上显示的标签,以及percentages,包含负值和正值的百分比。

然后您可以将这些带有相关信息的列名称作为xy 参数传递给sns.barplot

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

dummy = pd.DataFrame({'A' : [-4, -3, -1, 0, 1, 2, 3, 4, 5], 'B' : [-4, -3, -1, 0, 1, 2, 3, 4, 5]})

df_percentages = pd.DataFrame({
'labels':['Less than 0', 'Greater than or equal to 0'],
'percentage':[100*x/len(dummy['A']) for x in [sum(dummy['A'] < 0), sum(dummy['A']>=0)]]
})

sns.barplot(x='labels', y='percentage', data=df_percentages)
plt.show()

enter image description here

关于python - 条形图,带有单独的正值和负值条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66882233/

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