2016-10-11 11 views
8

私はユーザ情報を持つパンダdataframeを持っています。ユーザーの年齢を同じプロットのkind='kde'kind='hist'の両方としてプロットしたいと思います。現時点では、私は2つの別々のプロットを持つことができます。データフレームは次のようになります。使用して同じプロット上に 'hist'と 'kde'の両方としてデータフレームをプロットする

member_df=  
user_id Age 
1   23 
2   34 
3   63 
4   18 
5   53 
... 

ax1 = plt.subplot2grid((2,3), (0,0)) 
member_df.Age.plot(kind='kde', xlim=[16, 100]) 
ax1.set_xlabel('Age') 

ax2 = plt.subplot2grid((2,3), (0,1)) 
member_df.Age.plot(kind='hist', bins=40) 
ax2.set_xlabel('Age') 

ax3 = ... 

私はkind='kde'は累積分布を与えるkind='kde'のに対し、y軸のために私に周波数を与えることを理解しますが、両方を結合する方法があるとy軸を周波数で表しますか?

答えて

6

pd.DataFrame.plot()は、それがプロットしているを返します。これを他のプロットに再利用することができます。

試してみてください。

ax = member_df.Age.plot(kind='kde') 
member_df.Age.plot(kind='hist', bins=40, ax=ax) 
ax.set_xlabel('Age') 


私は
も背景に入れて最初、私はsecondary_y

import pandas as pd 
import numpy as np 


np.random.seed([3,1415]) 
df = pd.DataFrame(np.random.randn(100, 2), columns=list('ab')) 

ax = df.a.plot(kind='hist') 
df.a.plot(kind='kde', ax=ax, secondary_y=True) 

enter image description here

kdeを置く histプロット subplot2gridを使用して
をコメントする

応答。ちょうどあなたがあなたのデータフレームのすべての列のためにそれをしたい場合はax1

import pandas as pd 
import numpy as np 

ax1 = plt.subplot2grid((2,3), (0,0)) 

np.random.seed([3,1415]) 
df = pd.DataFrame(np.random.randn(100, 2), columns=list('ab')) 

df.a.plot(kind='hist', ax=ax1) 
df.a.plot(kind='kde', ax=ax1, secondary_y=True) 

enter image description here

+0

私は、コードをテストしてみました私が必要とするものを少し修正しようとしました。これは、私が考慮すべき2つのプロットしかないときのトリックです。 'sublot2grid'にインクルードしようとすると、同じ結果が得られません。ヒストグラムを再現するだけです。 – Lukasz

+2

@ルーカスどんな場合でも同じ 'ax'を使いたいと思っています。 – piRSquared

2

を再利用:

fig, ax = plt.subplots(8,3, figsize=(20, 50)) 
# you can change the distribution, I had 22 columns, so 8x3 is fine to me 
fig.subplots_adjust(hspace = .2, wspace=.2,) 

ax = ax.ravel() 

for i in range(len(I_df.columns)): 
    ax[i] = I_df.iloc[:,i].plot(kind='hist', ax=ax[i]) 
    ax[i] = I_df.iloc[:,i].plot(kind='kde', ax=ax[i], secondary_y=True) 
    plt.title(I_df.columns[i]) 

私はそれが役に立てば幸い:)

関連する問題