2017-11-15 16 views
0

아래 코드는 프레임 당 30k를 산포하는 것으로 600k 점의 애니메이션을 만듭니다. 애니메이션은 내 컬러 맵 (Heat Intensity)을 애니메이션에 포함시키는 법을 제외하고는 완벽하게 작동합니다. Xs와 Ys는 변화하지만 포인트의 색상은 파란색입니다. 색상을 변경하려면파이썬 대화 형 플롯 애니메이션에서 색상 맵을 설정하는 방법

import numpy as np 
import matplotlib.pyplot as plt 

Heatintensity=workdata[0:600000] #Values controlling scatter colormap 
Xs=xCoord[0:600000] 
Ys=yCoord[0:600000] 

plt.ion() 
fig, ax = plt.subplots() 
sc = ax.scatter(Xs, Ys, c=Heatintensity, cmap=cm.jet, s=5) 

plt.draw() 
for i in range(20): 
    sc.set_offsets(np.c_[Xs[(i*30000):(i*30000)+30000],\ 
         Ys[(i*30000):(i*30000)+30000]]) 
    fig.canvas.draw_idle() 
    plt.pause(0.1) 
+0

나는 당신의 코드를 시도했고 그것은 내가 만들었다. ''Heatintensity''에있는 것이''dtype''과 다른 값을 가지고 있다고 확신합니까? – alexblae

답변

1

, 당신은 오프셋을 변경하는 것 외에도

sc.set_array(Heatintensity[(i*30000):(i*30000)+30000]) 

를 사용해야합니다.

import numpy as np 
import matplotlib.pyplot as plt 

Heatintensity=np.random.rand(600000) #Values controlling scatter colormap 
Xs=np.random.rand(600000) 
Ys=np.random.rand(600000) 

plt.ion() 
fig, ax = plt.subplots() 

norm = plt.Normalize(Heatintensity.min(), Heatintensity.max()) 
sc = ax.scatter(Xs, Ys, c=Heatintensity, s=5, cmap=plt.cm.jet, norm=norm) 

plt.draw() 
for i in range(20): 
    # set coordinates 
    sc.set_offsets(np.c_[Xs[(i*30000):(i*30000)+30000],\ 
         Ys[(i*30000):(i*30000)+30000]]) 
    # set colors 
    sc.set_array(Heatintensity[(i*30000):(i*30000)+30000]) 
    # draw and make pause 
    plt.pause(0.1) 

plt.ioff() 
plt.show() 

동일한 될 수

각 애니메이션 단계와 동일한 수치를 나타내는 색상 위해서는

, 산란은

norm = plt.Normalize(Heatintensity.min(), Heatintensity.max()) 

하는

완료 예컨대 모든 데이터로 정규화되어야 FuncAnimation을 사용하여 달성했습니다 :

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

Heatintensity=np.random.rand(600000) #Values controlling scatter colormap 
Xs=np.random.rand(600000) 
Ys=np.random.rand(600000) 

fig, ax = plt.subplots() 

norm = plt.Normalize(Heatintensity.min(), Heatintensity.max()) 
sc = ax.scatter(Xs, Ys, c=Heatintensity, s=5, cmap=plt.cm.jet, norm=norm) 


def update(i): 
    # set coordinates 
    sc.set_offsets(np.c_[Xs[(i*30000):(i*30000)+30000],\ 
         Ys[(i*30000):(i*30000)+30000]]) 
    # set colors 
    sc.set_array(Heatintensity[(i*30000):(i*30000)+30000]) 


ani = animation.FuncAnimation(fig, update, frames=range(20), interval=100) 

plt.show() 
+0

FuncAnimation에 대한 추가 정보로 위를 넘어서 주셔서 감사합니다. –