2016-07-17 205 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