Python 3d散点图彩色贴图问题

Python 3d散点图彩色贴图问题,python,matplotlib,color-mapping,Python,Matplotlib,Color Mapping,我有四维数据(x,y,z位移;以及各自的电压),我希望用python绘制一个3d散点图。我已经得到了要渲染的3d绘图,但是我想让点的颜色使用颜色贴图来改变,这取决于点电压的大小 我尝试了一些方法,但似乎无法使其正常工作我遇到了错误ValueError:无法将参数类型转换为rgba数组。我不知道如何转换我需要转换的东西,所以如果有人能提供一些帮助,我将不胜感激 我的代码在这里: fig = plt.figure() from mpl_toolkits.mplot3d import Axes3D c

我有四维数据(x,y,z位移;以及各自的电压),我希望用python绘制一个3d散点图。我已经得到了要渲染的3d绘图,但是我想让点的颜色使用颜色贴图来改变,这取决于点电压的大小

我尝试了一些方法,但似乎无法使其正常工作我遇到了错误
ValueError:无法将参数类型转换为rgba数组
。我不知道如何转换我需要转换的东西,所以如果有人能提供一些帮助,我将不胜感激

我的代码在这里:

fig = plt.figure()
from mpl_toolkits.mplot3d import Axes3D
cmhot = plt.cm.get_cmap("hot")
ax = fig.add_subplot(111, projection='3d',)
ax.scatter(x, y, z, v, s=50, c = cmhot)
plt.show()
可以采用标量序列(例如
列表
数组
)的颜色参数
c
,以及
cmap
参数来指定颜色映射。因此,要使颜色根据电压的大小而变化,您可以定义:

c = np.abs(v)
这使得正电压和负电压具有相同的颜色。如果您希望每种颜色(正色或负色)都有自己的颜色,您可以使用
c=v


比如说,

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x, y, z, v = (np.random.random((4,100))-0.5)*15
c = np.abs(v)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
cmhot = plt.get_cmap("hot")
cax = ax.scatter(x, y, z, v, s=50, c=c, cmap=cmhot)

plt.show()

如果从unutbu的回答中不清楚,您面临的确切问题是kwarg
c
是要映射的值,kwarg
cmap
是要映射
c
的颜色映射。非常感谢你们两位。我明白我现在做错了什么。不过,我还有一个问题。用上面的方法修复代码仍然会得到蓝色的散射点(所有的阴影都是一样的)。此外,复制和粘贴unutbu在上面给出的示例代码可以得到与上面显示的相同的绘图,但同样只有蓝色。这会让我相信,也许我错过了使用彩色地图所需的任何软件包。有我丢失的包裹吗?我使用pythonxy发行版已经有一段时间了,直到今天还不需要彩色地图。嗯,这是一个奇怪的问题。对不起,我不知道解决办法。我在谷歌上四处搜索,但找不到关于这种行为的任何其他问题/报告。您可能想尝试在此处发布一个关于如何解决此问题的问题,或者检查.matplotlibrc配置文件(搜索“蓝色”或“后端”,或者浏览查看是否有任何问题看起来像是罪魁祸首),或者——如果不太难的话——重新安装pythonxy.PS。我不认为您丢失了一个包,因为
plt.get\u cmap(“hot”)
不会引发异常。在
matplotlib
中存在(曾经?)一个错误,请参见下面的线程: