2017-10-11 95 views
0

我有一組數據,與我解壓到形成我點的x,y和z分量座標。在同一數據幀,我有一個強度(姑且稱之爲j),我想用的彩色地圖上的點。我的腳本從我的熊貓數據幀在迭代加點:彩色地圖在matplotlib 3D散點圖沒有被應用正確

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() 

然而,所有的點是一個奇異的顏色,不具有每點不同的色調響應,通過df[row]['j']定義(它返回一個整數對應於我的觀點的強度)。我失去了一些東西明顯或for循環使顏色映射不可能的(即它每次迭代設置基線的顏色,從而不能夠因爲每一個新的點創建一個新的最小/最大區別最小/最大)?

謝謝!

回答

1

這應該工作:

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

(沒有任何for循環)

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() 

希望能幫到你。