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

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

繪制子圖時如何修復“numpy.ndarray”對象沒有屬性“get_figure”

繪制子圖時如何修復“numpy.ndarray”對象沒有屬性“get_figure”

繁星點點滴滴 2023-10-11 15:39:14
我編寫了以下代碼來在不同的子圖中繪制 6 個餅圖,但出現錯誤。如果我使用它僅繪制 2 個圖表,則該代碼可以正常工作,但如果超出此范圍,則會產生錯誤。我的數據集中有 6 個分類變量,其名稱存儲在 list 中cat_cols。圖表是根據訓練數據繪制的train。代碼fig, axes = plt.subplots(2, 3, figsize=(24, 10))for i, c in enumerate(cat_cols):    train[c].value_counts()[::-1].plot(kind = 'pie', ax=axes[i], title=c, autopct='%.0f', fontsize=18)  axes[i].set_ylabel('')    plt.tight_layout()錯誤AttributeError: 'numpy.ndarray' object has no attribute 'get_figure'我們該如何糾正這個問題?
查看完整描述

1 回答

?
三國紛爭

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

  • 問題是plt.subplots(2, 3, figsize=(24, 10))創建兩組 3 個子圖,而不是一組 6 個子圖。

array([[<AxesSubplot:xlabel='radians'>,?<AxesSubplot:xlabel='radians'>,?<AxesSubplot:xlabel='radians'>],
???????[<AxesSubplot:xlabel='radians'>,?<AxesSubplot:xlabel='radians'>,?<AxesSubplot:xlabel='radians'>]],?dtype=object)
  • axes使用解壓 中的所有子圖數組axes.ravel()

    • numpy.ravel,它返回一個展平的數組。

    • 列表理解也可以工作,axe = [sub for x in axes for sub in x]

    • 實際上,可以類似地使用axes.ravel()、axes.flat、 和。axes.flatten()請參閱numpy 中的 flatten 和 ravel 函數有什么區別?&?numpy 之間的 flat 和 ravel() 之間的區別。

  • 將每個圖分配給 中的子圖之一axe。

import pandas as pd

import numpy as np


# sinusoidal sample data

sample_length = range(1, 6+1)

rads = np.arange(0, 2*np.pi, 0.01)

data = np.array([np.sin(t*rads) for t in sample_length])

df = pd.DataFrame(data.T, index=pd.Series(rads.tolist(), name='radians'), columns=[f'freq: {i}x' for i in sample_length])


# crate the figure and axes

fig, axes = plt.subplots(2, 3, figsize=(24, 10))


# unpack all the axes subplots

axe = axes.ravel()


# assign the plot to each subplot in axe

for i, c in enumerate(df.columns):

? ? df[c].plot(ax=axe[i])


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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