2017-10-11 1 views
0

필자는 내 포인트의 x, y 및 z 구성 요소를 형성하기 위해 추출한 좌표로 데이터 세트를 가지고 있습니다. 같은 데이터 프레임에서, 나는 칼라 맵을 그 포인트에 맵핑하기 위해 사용하고자하는 intensity를 가지고있다 (j이라고하자). 내 스크립트 내 팬더의 dataframe에서 반복을 통해 포인트를 추가합니다 : df[row]['j']에 의해 정의 된matplotlib의 3D scatter 플롯에 대한 컬러 맵이 제대로 적용되지 않습니다.

그러나
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

for row, index in df.iterrows(): 
    x = df[row]['x'] 
    y = df[row]['y'] 
    z = df[row]['z'] 
    ax.scatter(x, y, z, cmap='bwr', c=df[row]['j']) 

plt.show() 

이 모든 점 정수를 반환 (단수 색깔과 포인트 당 다른 색 음영을 가진 응답하지 않는 내 지점의 강도에 해당). 명백한 항목이 누락되었거나 for 루프를 사용하여 색상 매핑을 불가능하게 만들 수 있습니다 (즉, 반복마다 색상의 기준선을 설정하므로 각각의 새로운 점이 새로운 최소/최대를 생성하므로 최소/최대를 구별 할 수 없습니다)?

감사합니다.

답변

1

이 작동합니다 :

ax.scatter(df['x'], df['y'], df['z'], cmap='bwr', c=df['j']) 

을 (루프에 대한없이)

1

을 나는이 같은지도를 얻고 싶은 생각 : 이 enter image description here

내 코드를 직접 당신 df.column에게 사용됩니다 플롯하고 싶다 :

import pandas as pd 
import matplotlib.pyplot as plt 
import io 
from mpl_toolkits.mplot3d import Axes3D 
t=""" 
0 , 1 , 0 , b 
2 , 1 , 2 , b 
3 , 2 , 1 , r 
2 , 3 , 5 , r 
3 , 2 , 5 , b 
7 , 3 , 6 , g 
8 , 3 , 6 , g 
2 , 3 , 6 , g 
7 , 3 , 6 , g 
8 , 3 , 6 , g 
2 , 3 , 6 , g 
2 , 3 , 6 , g 
3 , 4 , 6 , g 
5 , 2 , 6 , r 
6 , 2 , 6 , r 
7 , 3 , 6 , r 
2 , 1 , 6 , g 
7 , 13 , 6 , r 
8 , 23 , 6 , r 
2 , 33 , 6 , r 
""" 

df=pd.read_csv(io.StringIO(t),names=['x','y','z','j'],sep=',') 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 


ax.scatter(df.x, df.y, df.z,c=df.y) 

plt.show() 

희망이 당신을 돕는다.

관련 문제