Создание нескольких графиков в цикле matplotlib. subplots
Добрый вечер подскажите почему не работает. Необходимо что бы в первой строчке были гистограммы а в нижних строчках были барплоты.
import pandas as pd
from matplotlib import pyplot as plt
url='https://drive.google.com/file/d/1K-tf97Hjklw_eHFxeup36bBpElSC1hrb/view?usp=sharing'
url='https://drive.google.com/uc?id=' + url.split('/')[-2]
data = pd.read_csv(url)
num_cols = [
'ClientPeriod',
'MonthlySpending',
'TotalSpent'
]
#Убираю пустые строки в TotalSpent
data.TotalSpent = data.TotalSpent.apply(lambda x: float(x) if x.split() else 0)
fig, ax = plt.subplots(2, 3, figsize=(18,18))
ax = ax.ravel()
for i, col in enumerate(num_cols):
ax[i].set_title('Hist_table ' + col)
ax[i].boxplot(data[col][:100])
ax[i].set_title('Hist_table ' + col)
ax[i].hist(data[col][:100])
fig.show()
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Вы немного перемудрили с индексированием axes - индексация идет по порядку от нулевой ax до ax ч номером (2*3 - 1).
В вашем случае быстрым решением можно считать такое:
for i in range(len(num_cols)):
print(num_cols[i])
ax[i].set_title('Hist_table ' + num_cols[i])
ax[i].boxplot(data[num_cols[i]][:100])
ax[i+len(num_cols)].set_title('Hist_table ' + col)
ax[i+len(num_cols)].hist(data[num_cols[i]][:100])
plt.show()
Кроме того, вы, мягко говоря, очень своеобразно избавляетесь от пустых строк.
