Python 3d scatterplot mapa de color problema

Tengo datos de cuatro dimensiones (x, y, z desplazamientos y voltajes respectivos) que deseo trazar en un diagtwig de dispersión 3d en python. Obtuve la gráfica 3D para renderizar, pero quiero cambiar el color de los puntos utilizando un mapa de colores, dependiendo de la magnitud del voltaje del punto.

He intentado algunas cosas, pero parece que no puedo hacer que funcione. Recibo el error ValueError: Cannot convert argument type to rgba array . No estoy seguro de cómo convertir exactamente lo que necesito convertir, así que si alguien pudiera ofrecer ayuda, le agradecería mucho.

Mi código está aquí:

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

ax.scatter puede tomar un parámetro de color c que es una secuencia (por ejemplo, una list o una array ) de escalares, y un parámetro cmap para especificar un mapa de color. Entonces, para hacer que los colores varíen de acuerdo con la magnitud de los voltajes, podría definir:

 c = np.abs(v) 

Esto hace que los voltajes positivos y negativos tengan el mismo color. Si, en cambio, deseaba que cada color (positivo o negativo) tuviera su propio color, simplemente podría usar c = v .


Por ejemplo,

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

introduzca la descripción de la imagen aquí