как сделать гистограмму подпункта с разными бинами pandas? - PullRequest
0 голосов
/ 05 января 2020
x=pd.DataFrame(np.random.randn(400)) 
fig, axs = plt.subplots(2, 2, sharey=True, tight_layout=True, figsize=(10,5)); 
for idx in range(3):
    axs[idx].hist(x, bins=20)
    axs[idx].hist(x, bins=40)
    axs[idx].hist(x, bins=60)  
    axs[idx].hist(x, bins=100) 

когда я запускаю код выше; я получаю эту ошибку

AttributeError: у объекта 'numpy .ndarray' нет атрибута 'hist';

не могли бы вы решить эту проблему, пожалуйста?

1 Ответ

2 голосов
/ 05 января 2020

Вот что такое axs:

array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7fb9261a4a10>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x7fb9260fc510>],
       [<matplotlib.axes._subplots.AxesSubplot object at 0x7fb926130b10>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x7fb9260f1190>]],
      dtype=object)

Итак, вы хотите что-то вроде этого:

x=pd.DataFrame(np.random.randn(400)) 

fig, axs = plt.subplots(2, 2, sharey=True, tight_layout=True, figsize=(10,5));     
axs[0, 0].hist(x, bins=20)
axs[0, 1].hist(x, bins=40)
axs[1, 0].hist(x, bins=60)
axs[1, 1].hist(x, bins=100)

Или вы можете использовать for-l oop следующим образом:

b = [20, 40, 60, 100]
for i, ax in enumerate(axs.flatten()):
    ax.hist(x, bins=b[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...