亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用數據框的切片時如何使子圖正常工作

使用數據框的切片時如何使子圖正常工作

心有法竹 2023-03-16 10:58:43
我正在嘗試繪制 4 個子圖,將大數據框分成較小的部分,這樣條形圖就不會過于龐大和難以閱讀。我已將切片分開并將它們分別分配給單獨的數據幀。我正在使用的數據框如下所示(此數據框是多索引數據框 (df.unstack()) 的 unstack 輸出):Age Range   40-49  50-59  60-69  70-79  80+County                                     Allen         NaN    NaN    NaN    NaN  1.0Athens        NaN    NaN    1.0    NaN  NaNBelmont       NaN    1.0    NaN    1.0  1.0Clark         NaN    NaN    NaN    1.0  NaNColumbiana    NaN    NaN    NaN    1.0  NaNCuyahoga      NaN    3.0    1.0    7.0  3.0Defiance      NaN    NaN    NaN    NaN  1.0Franklin      NaN    NaN    4.0    1.0  3.0Greene        NaN    NaN    1.0    NaN  NaNHamilton      NaN    1.0    2.0    1.0  7.0Hocking       NaN    NaN    NaN    1.0  NaNKnox          NaN    NaN    NaN    NaN  1.0Lorain        NaN    NaN    NaN    2.0  NaNLucas         NaN    NaN    1.0    NaN  2.0Madison       1.0    NaN    NaN    NaN  NaNMahoning      NaN    1.0    NaN    1.0  2.0Medina        NaN    1.0    NaN    NaN  NaNMiami         NaN    NaN    1.0    NaN  1.0Pickaway      NaN    NaN    NaN    1.0  NaNPortage       1.0    NaN    NaN    2.0  NaNRoss          NaN    NaN    NaN    1.0  NaNSeneca        NaN    NaN    NaN    NaN  1.0Shelby        NaN    NaN    NaN    NaN  1.0Stark         NaN    NaN    NaN    1.0  NaNSummit        NaN    NaN    NaN    1.0  NaNTrumbull      NaN    NaN    NaN    1.0  1.0Warren        NaN    1.0    NaN    NaN  2.0我使用以下代碼將它們分成 4 個相等的切片并將它們分配給各個數據幀:df1 = df.unstack()[:7]df2 = df.unstack()[7:14]df3 = df.unstack()[14:21]df4 = df.unstack()[21:]然后我使用以下代碼將它們繪制為子圖:plt.subplot(221)df1.plot(kind='bar')plt.subplot(222)df2.plot(kind='bar')plt.subplot(223)df3.plot(kind='bar')plt.subplot(224)df4.plot(kind='bar')plt.show()當我運行此代碼時,它會輸出四個空白子圖(它們采用 4 行 1 列格式),然后在這四個之后它僅繪制最后一個子圖 (df4)。如果我注釋掉 plt.subplot() 行,則繪圖會正確輸出。我以前以類似的格式繪制過類似的東西,所以我不確定為什么它不會以相同的方式運行,這可能與使用切片有關嗎?
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

要在 matplotlib 子圖上繪制 pandas.DataFrame,您需要:

  1. 將調用返回的軸存儲plt.subplot()到一個變量中,然后您可以

  2. 傳遞這個軸來pandas.DataFrame.plot()調用

喜歡:

ax1 = plt.subplot(221)
df1.plot(kind='bar', ax = ax1)

因為你沒有這樣做,所以每個新的plt.subplot()調用都會創建新的數字并覆蓋調用創建的數字pandas.DataFrame.plot(),因此你會得到 4 個空圖的數字和一個來自df4.plot(kind='bar')

你應該做什么:

ax1 = plt.subplot(221)

df1.plot(kind='bar', ax = ax1)


ax2 = plt.subplot(222)

df2.plot(kind='bar', ax = ax2)


ax3 = plt.subplot(223)

df3.plot(kind='bar', ax = ax3)


ax4 = plt.subplot(224)

df4.plot(kind='bar', ax = ax4)


plt.show()

使用 DataFrame 的前兩列的示例輸出:

http://img1.sycdn.imooc.com//6412861700013bf103680248.jpg

查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 80 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號