2

これはかなり簡単だと思いますが、しばらくの間、答えを得ようとしましたが、あまり成功しませんでした。2つのカテゴリの積み上げ棒グラフを作成したいのですが、そのような情報は2つの別々の日付フレームにあります。

これはコードです:

first_babies = live[live.birthord == 1] # first dataframe
others = live[live.birthord != 1] # second dataframe

fig = figure()
ax1 = fig.add_subplot(1,1,1)

first_babies.groupby(by=['prglength']).size().plot(
                     kind='bar', ax=ax1, label='first babies') # first plot
others.groupby(by=['prglength']).size().plot(kind='bar', ax=ax1, color='r',
               label='others') #second plot
ax1.legend(loc='best')
ax1.set_xlabel('weeks')
ax1.set_ylabel('frequency')
ax1.set_title('Histogram')

ここに画像の説明を入力してください

しかし、私はこのようなもの、または私が言ったように、カテゴリをよりよく区別するために積み上げ棒グラフが必要です。

ここに画像の説明を入力してください

2つの異なるプロットを使用すると機能しないため、使用できません。また、要素の数が同じでないため、stacked=True新しいデータフレームを作成できません。first_babiesothers

ありがとう

4

1 に答える 1

1

まず、区別するために新しい列を作成します'first_babies'

live['first_babies'] = live['birthord'].lambda(x: 'first_babies' if x==1 else 'others')

あなたはグループ化することができますunstack

grouped = live.groupby(by=['prglength', 'first_babies']).size()
unstacked_count = grouped.size().unstack()

これで、積み上げ棒グラフを直接プロットできます。

unstacked_count.plot(kind='bar', stacked=True)
于 2012-12-21T04:40:14.353 に答える