Python matplotlib中带颜色的三维散点图

Python matplotlib中带颜色的三维散点图,python,matplotlib,plot,colors,3d,Python,Matplotlib,Plot,Colors,3d,我使用python中matplotlib中的散点3d绘图来绘制以下数据 x y z b2 3.28912855713 4.64604863545 3.95526335139 1.0 3.31252670518 4.65385917898 3.96834118896 1.0 当绘图为2d时 fig = plt.figure() ax = fig.add_subplot(111) line =ax.scatter(x,y,c

我使用python中matplotlib中的散点3d绘图来绘制以下数据

      x              y            z        b2
3.28912855713 4.64604863545 3.95526335139 1.0
3.31252670518 4.65385917898 3.96834118896 1.0
当绘图为2d时

fig = plt.figure()
ax = fig.add_subplot(111)
line =ax.scatter(x,y,c=b2,s=500,marker='*',edgecolors='none')
cb = plt.colorbar(line)
它生成以下图像,这是完全正确的。

现在,我想绘制三维点,其代码为:

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
line = ax.scatter(x,y,z,c=b2,s=1500,marker='*',edgecolors='none',depthshade=0)
cb = plt.colorbar(line)
我得到了下面的图,这是不正确的,因为颜色应该是绿色的,就像前面的例子(b2不变)。


我遗漏了什么吗?

可能没有。我不知道您正在使用哪个版本的Matplotlib,但在某个时候,这个问题存在一个bug,显然对我今天使用的版本(即1.5.1)仍然有影响(查看更多信息)

根据您的问题调整@Yann解决方案应该可以解决该问题。我在我的电脑上进行了测试,结果如下:

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

x = [3.28912855713, 3.31252670518]
y = [4.64604863545, 4.65385917898]
z = [3.95526335139, 3.96834118896]
b2 = [1, 1]

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
line = ax.scatter(x, y ,z , c=b2, s=1500, marker='*', edgecolors='none', depthshade=0)
cb = plt.colorbar(line)

def forceUpdate(event):
    global line
    line.changed()

fig.canvas.mpl_connect('draw_event', forceUpdate)

plt.show()
进入和旋转后的绘图图像如下: