Я хочу автоматизировать подзаголовок осей, используя для l oop, а не определять каждое подмножество - PullRequest
0 голосов
/ 18 июня 2020

Я создал диаграмму рассеяния, используя следующий код (Код 1). Работает нормально. У меня вопрос о code2. Поскольку я хочу создать несколько графиков, мне интересно использовать l oop для их создания, а не писать каждый. Я написал для кода l oop (код 2), но он выдает ошибку. Пожалуйста, помогите мне с кодом 2.

code1

import matplotlib.pyplot as plt
fig,(ax1,ax2,ax3)=plt.subplots(3,1,figsize=(5,10))
ax1.scatter(norm_reviews["Fandango_Ratingvalue"],norm_reviews["RT_user_norm"])
ax1.set_xlabel("Fandango")
ax1.set_ylabel("Rotten Tomatoes")
ax1.set_xlim(0,5)
ax1.set_ylim(0,5)
ax2.scatter(norm_reviews["Fandango_Ratingvalue"],norm_reviews["Metacritic_user_nom"])
ax2.set_xlabel("Fandango")
ax2.set_ylabel("Metacritic")
ax2.set_xlim(0,5)
ax2.set_ylim(0,5)
ax3.scatter(norm_reviews["Fandango_Ratingvalue"],norm_reviews["IMDB_norm"])
ax3.set_xlabel("Fandango")
ax3.set_ylabel("IMDB")
ax3.set_xlim(0,5)
ax3.set_ylim(0,5)
plt.show()

code2:

import matplotlib.pyplot as plt
for i in range(3):
    fig,ax(i) = plt.figure(3,1,i,figsize=(5,10))    
    x_label="Fandango"
    y_label=["RT_user_norm","Metacritic_user_nom","IMDB_norm"]
    ax(i).scatter(norm_reviews[x_label],norm_reviews[y_label[i]])
    ax(i).set_xlim(0,5)
    ax(i).set_ylim(0,5)
    ax(i).set_xlabel(x_label)
    ax(i).set_ylabel(y_label[i])
plt.show()

1 Ответ

0 голосов
/ 18 июня 2020

range (3) даст вам 0, 1, 2. Вы не можете проиндексировать подзаголовок с нуля.

Вы можете использовать эту базовую структуру c:

plt.figure()
for i in range(3):
    plt.subplot(3,1,i+1)
    plt.plot([1,2], [3,4])
plt.show()

Другая возможность:

fig, axs = plt.subplots(3, 1, sharex=True)
for i in range(3):
    axs[i].plot([0, 1], [2, 3])
plt.show()
...