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 답변
-
작동하는 코드의 패턴을 보면 그냥 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()
테스트는 안해봤습니다. 참고가 되면 좋겠네요.
댓글 입력