Атрибуты некоторых подзаговоров не работают в цикле - PullRequest
0 голосов
/ 03 марта 2019

У меня есть код:

norm_reviews = pd.read_csv('fandango_scores.csv')

fig = plt.figure(figsize=(5, 20))
ax1 = fig.add_subplot(4, 1, 1)
ax2 = fig.add_subplot(4, 1, 2)
ax3 = fig.add_subplot(4, 1, 3)
ax4 = fig.add_subplot(4, 1, 4)

subplot_list = [ax1, ax2, ax3, ax4]
columns_for_visualization = ['Fandango_Ratingvalue', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm']
for i in range(0, len(subplot_list)):
    subplot_list[i] = subplot_list[i].hist(norm_reviews[columns_for_visualization[i]], bins=20, range=(0, 5))
    subplot_list[i] = subplot_list[i].set_title('Distribution ' + columns_for_visualization[i])
plt.show()

Проблема в том, что первая строка в цикле работает, но вторая строка не работает:

subplot_list[i] = subplot_list[i].hist(norm_reviews[columns_for_visualization[i]], bins=20, range=(0, 5))
subplot_list[i] = subplot_list[i].set_title('Distribution ' + columns_for_visualization[i])

Ошибка:

Traceback (most recent call last):
  File "C:/ML/DataQuest/Data visualisazation/visualization.py", line 17, in <module>
    subplot_list[i] = subplot_list[i].set_title('Distribution ' + columns_for_visualization[i])
AttributeError: 'tuple' object has no attribute 'set_title'

Но почему работает первая строка?А почему не работает вторая строка?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Я нашел решение:

for i in range(0, len(subplot_list)):
    subplot_list[i].hist(norm_reviews[columns_for_visualization[i]], bins=20, range=(0, 5))
    subplot_list[i].set_title('Distribution ' + columns_for_visualization[i])
0 голосов
/ 03 марта 2019

Это будет работать

for sub_plot, col_for_visualization in zip(subplot_list, columns_for_visualization):
    sub_plot.hist(norm_reviews[col_for_visualization], bins=20, range=(0, 5))
    sub_plot.set_title('Distribution ' + col_for_visualization )
plt.show()

Причина, по которой ваш код не работает, заключается в том, что вы фактически переназначаете содержимое subplot_list[i] в первой строке.К тому времени, как вы перейдете ко второй строке, содержимое уже не является ax объектом, но независимо от того, что возвращает функция hist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...