海运条形图升序

2022-02-27 00:00:00 python seaborn

问题描述

您好,我有以下代码,它给出了以下输出

plt.figure(figsize=(30,18))
sns.barplot(x='addr_state', y = 'loan_amnt', data=data, ci= None, estimator=mean)
plt.xlabel("State", size=15)
plt.ylabel("Average Loan Amount", size=15)
plt.tight_layout()

我试图将顺序降下来,但是每当我运行代码时,我总是得到一个错误,但是我删除了order=downending,它运行了,但是它不是按顺序运行的。我正试着按每个州的平均金额进行排序。此外,还有一种方法可以使州文本更大,也可以使贷款金额更大。提前感谢您!


解决方案

据我所知,Seborn没有内置的通过聚合金额订购的方式。 然而, pandas 可以创建这样一个聚合和排序的列表,然后可以通过Seborn绘制出来。

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

N = 200
data = pd.DataFrame({'addr_state': np.random.choice(list('abcdefghijklmnopqrst'), N),
                     'loan_amnt': np.random.uniform(1000, 10000, N)})
agg_data = data.groupby('addr_state').aggregate('mean').sort_values('loan_amnt', ascending=False)

plt.figure(figsize=(10, 5))
sns.barplot(x=agg_data.index, y='loan_amnt', data=agg_data)
plt.xlabel("State", size=15)
plt.ylabel("Average Loan Amount", size=15)
plt.tight_layout()
plt.show()

要包括表示置信区间的行,可以使用排序的聚合数据的顺序从原始数据创建条形图:

sns.barplot(x='addr_state', y='loan_amnt', order=agg_data.index, data=data)

相关文章