2016-07-17 225 views
1

編輯:我設法弄清楚發生了什麼。散點有一個參數「線寬」(lw = n),用於確定散點圖的繪圖點周圍線條的粗細。因爲我的繪圖點大小爲1(s = 1),所以線寬太厚,實際上覆蓋了繪圖點的顏色。將線寬設置爲0(lw = 0)應該可以做到。如何在Matplotlib中的3D散點圖上着色數據點

我想生成一個數據點的三維散點圖,根據它們的y座標的值對它們着色,但我無法設法讓點實際着色。

如果數據點的值很低,顏色應該更接近色譜的藍色端。如果值越高,顏色應該越接近光譜的紅色端。

我已經設法在2D中繪製我想要的圖,但在3D中複製過程時遇到了問題。目前的代碼只繪製黑色點。

這是我的3D代碼,以及2D中所需結果的屏幕截圖。我在這裏做錯了什麼?

x_points,y_points和z_points是浮點值的列表。

import matplotlib.pyplot as plt 
from matplotlib import cm 
from mpl_toolkits.mplot3d import Axes3D 

def three_dimensional_scatterplot(
    self, x_points, y_points, z_points, data_file 
): 

    cm1 = cm.get_cmap('gist_rainbow') 

    fig = plt1.figure() 
    ax = fig.add_subplot(111, projection='3d') 
    ax.scatter(
     x_points, 
     y_points, 
     z_points, 
     s=1, 
     c=y_points, 
     cmap=cm1 
    ) 

    ax.set_xlabel('X axis') 
    plt1.show() 

enter image description here

回答

1

你必須繪製喜歡這裏:

import matplotlib.pyplot as plt 
from matplotlib import cm 
from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 

x = np.random.rand(25) 
y = np.random.rand(25) 
z = np.random.rand(25) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
p3d = ax.scatter(x, y, z, s=30, c=y, cmap = cm.coolwarm) 
plt.show() 

enter image description here

+0

疑難雜症,我猜大小爲這裏的決定因素。非常感謝你。 – gsamerica