python subplot 질문합니다~

조회수 2301회
fig, ax = plt.subplots(5, 2)

ax[0, 0].plot(temp[:144], 'r')  
ax[0, 1].plot(temp[144:144*2], 'r')   
ax[1, 0].plot(temp[144*2:144*3], 'y')   
ax[1, 1].plot(temp[144*3:144*4], 'y')   
ax[2, 0].plot(temp[144*4:144*5], 'g')  
ax[2, 1].plot(temp[144*5:144*6], 'g')   
ax[3, 0].plot(temp[144*6:144*7], 'b')  
ax[3, 1].plot(temp[144*7:144*8], 'b')   
ax[4, 0].plot(temp[144*8:144*9], 'm')   
ax[4, 1].plot(temp[144*9:144*10], 'm')  

plt.show()

이미지

이렇게 그래프가 나올 수 있게 하고 싶은데 temp의 범위가 반복되어 다시 코드를 짰더니

fig, ax = plt.subplots(5, 2)

for i in range(5):  
    for j in range(2):  
        for k in range(10):  
            ax[i,j].plot(temp[144*k:144*(k+1)])
plt.show()

이미지

이렇게 되버리네요..

뭐가 잘못된거죠? 잘못된 부분이 뭔지 알려주셨으면 합니다~ 감사합니다 ^

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    작동하는 코드의 패턴을 보면 그냥 0부터 9까지 for를 한 번 도는 게 더 효율적일 것 같네요. 올려 주신 for문 3개는 결과적으로 5*2*10=100번을 순회하게 됩니다.

    fig, ax = plt.subplots(5, 2)
    s = 'rygbm'
    
    for x in range(10) :
        # 0, 0, 1, 1, 2, 2, 3, ... 형식의 수열을 얻기 위하여 이렇게 쓸 수 있음.
        # int(round(x/3)) 을 쓰면 0, 0, 0, 1, 1, 1, 2, ... 형식의 수열이 됨.
        a = int(round(x/2))
    
        # 0, 1, 0, 1, 0, ... 형식의 수열을 얻기 위하여 이렇게 할 수 있음.
        # x % 3 을 사용하면 0, 1, 2, 0, 1, 2, 0, ... 형식의 수열이 됨.
        b = x % 2
    
        c = x + 1
        d = s[a]
        ax[a, b].plot(temp[144*x:144*c], d)
    
    plt.show()
    

    테스트는 안해봤습니다. 참고가 되면 좋겠네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)