2017-12-29 13 views
1

저는 애니메이션 플롯 플롯을 만드는 [2000][200,3] 형식의 배열 배열을 가지고 있습니다. 2000은 프레임 수이고 내부 배열은 분산 될 점인 [length, [x,y,inten]] 형식을가집니다. 현재 스태틱 프레임으로 스 캐터 플롯을 애니메이션화합니다. 대신 움직이는 창을 통해 움직이는 방법이 있습니까?

Array[0]=np.array([x_1,y_1,I_1],[x_2,y_2,I_2],...,[x_200,y_200,I_200]) 

그래서 우리가 200 점 각 2000 프레임을 가지고 같은 그래서 예는 하나의 프레임이 보일 것이다. 이 점은 200 점마다 임의로 자르고 실제로 순차적입니다. 따라서 배열을 가능한대로 변형 할 수 있습니다.

Array=np.array(np.array([x_1,y_1,I_1],[x_2,y_2,I_2],...,[x_400000,y_400000,I_400000]) 

어떤 문제도 없습니다. 나는 이것을하는 방법을 안다.

제 질문은 200 포인트 빈을 표시하는 대신 점을 통해 적응 적으로 이동하는 산점도를 어떻게 애니메이트 할 수 있습니까? 아래 코드는 프레임 (1-200,201-400,401-600 등)이있는 애니메이션 산점도를 그릴 수 있지만 그 결과는 눈에 부드럽게 나타나지 않습니다. 이상적으로는 모든 점 또는 적어도 10 포인트마다 업데이트하는 예제 프레임 (1-200,2-201,3-202 등) 또는 (1-200,11-210,21-200 등)이 필요합니다.)

numframes=len(Array) 

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

norm = plt.Normalize(Array[:][:,2].min(), Array[:][:,2].max()) 
sc = ax.scatter(Array[0][:,0], Array[0][:,1], c=Array[0][:,2], cmap=cm.hot, s=5) 

plt.xlim(-40,40) 
plt.ylim(0,200) 
plt.draw() 
for i in range(numframes): 

    sc.set_offsets(np.c_[Array[i][:,0], Array[i][:,1]]) 
    sc.set_array(Array[i][:,2]) 
    print(i) 
    plt.pause(0.1) 

plt.ioff() 
plt.show() 
+0

내가 매우 어려운 이해 찾기 지속적으로 주어진 스텝 크기 200의 창 포인트 내 배열을 통해 단계 아래의 코드 대신에 몰래 비닝 어떤 문제 입니다. 200보다 작은 상자에서 [배열 배열 방법] (https://stackoverflow.com/questions/509211/understanding-pythons-slice-notation)을 묻는 중입니까? 어떤 경우라도 [최소, 완전하고 검증 가능한 예] (https://stackoverflow.com/help/mcve)를 제공해주십시오. 일반적으로 문제의 단순화 된 버전을 찾으려고하면 스스로 해결할 수 있습니다. –

답변

0

마다 200

stepsize=10 
NewArray=np.ravel(Array) 
NewArray.reshape(2000*200,3) 

plt.ion() 
fig, ax = plt.subplots() 
norm = plt.normalize(NewArray[:,2].min(), NewArray[:,2].max()) 
sc = ax.scatter(NewArray[0:200,0], NewArray[0:200,1], c=NewArray[0:200,2], cmap=cm.jet, s=5) 
plt.xlim(-40,40) 
plt.ylim(0,200) 
plt.draw() 
for i in range(len(NewArray//stepsize)-200): 
    sc.set_offsets(np.c_[NewArray[(i*stepsize):(i*stepsize)+200,0],\ 
          NewArray[(i*stepsize):(i*stepsize)+200,1]]) 
    sc.set_array(NewArray[(i*stepsize):(i*stepsize)+200,2]) 

    plt.pause(0.1) 

plt.ioff() 
plt.show() 
+0

'ion' 대신'FuncAnimation'을 사용하는 것을 고려하십시오. – ImportanceOfBeingErnest

관련 문제