所以我有这个数据集显示数十亿的国家的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)
上面的代码给出了下图:
我想做什么谁设置了箱子范围,所以他们看起来更像[250,500,750,1000,2000,5000,10000,20000]。
有没有办法在seaborn中做到这一点?
答案 0 :(得分:3)
您可以使用对数容器,它可以很好地处理您的数据。这是一个例子:
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()
答案 1 :(得分:2)
您可以将bin范围作为一个序列,在您的情况下为:
sns.distplot(df['GDP (BILLIONS)'].values,
bins=[250,500,750,1000,2000,5000,10000,20000],
kde=False,ax=ax[0])
但是,仅执行此操作不会更改x轴比例,您需要在Robbie答案中设置比例线才能做到这一点。