Seaborn:设置 distplot bin 范围?

F.K*_*tbi 7 python matplotlib seaborn

所以我有这个数据集显示了以十亿计的国家的 GDP(所以 1 万亿 GDP = 1000)。

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

df = pd.read_csv('2014_World_GDP')
df.sort('GDP (BILLIONS)',ascending=False, inplace=True)
sorted = df['GDP (BILLIONS)']

fig, ax = plt.subplots(figsize=(12, 8))
sns.distplot(sorted,bins=8,kde=False,ax=ax)
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我下图: 图片

我想做什么设置垃圾箱范围的人,使它们看起来更像 [250,500,750,1000,2000,5000,10000,20000]。

有没有办法在seaborn中做到这一点?

Rob*_*bie 7

您可以使用对数箱,它可以很好地处理按您的分布方式分配的数据。这是一个例子:

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

df = pd.DataFrame()
df['GDP (BILLIONS)'] = 2000*1./(np.random.random(250))
df.sort_values(by='GDP (BILLIONS)',ascending=False, inplace=True)

fig, ax = plt.subplots(1,2,figsize=(8, 3))

sns.distplot(df['GDP (BILLIONS)'].values,bins=8,kde=False,ax=ax[0])
ax[0].set_title('Linear Bins')

LogMin, LogMax = np.log10(df['GDP (BILLIONS)'].min()),np.log10(df['GDP (BILLIONS)'].max())
newBins = np.logspace(LogMin, LogMax,8)
sns.distplot(df['GDP (BILLIONS)'].values,bins=newBins,kde=False,ax=ax[1])
ax[1].set_xscale('log')
ax[1].set_title('Log Bins')

fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 当然对 op 的情况有好处,但没有回答问题。 (2认同)