我正在尝试创建一个情节,并用彩色条阴影显示点。
matplotlib.pyplot.scatter(x,y, c=time_color)
我有一个time_color列表,例如
time_color = [0, 4, 3, 3, 2, 3, 5, 4, 0, 3, 3, 2, 1, 2, 3, 4, 5, 1, 4, 3, 2]
不幸的是,plot命令不会接受指定颜色的列表。所以我将它转换为数组
numpy.array(time_color)
这给了我一个一维数组。
numpy.ndim(numpy.array(time_color))
如何将列表转换为二维数组以生成三维图(第三维是颜色)?
谢谢。
答案 0 :(得分:2)
您可以使用numpy.reshape
更改numpy
数组的维度。例如,您可以执行以下操作:
>>> import numpy
>>> time_color = [0, 4, 3, 3, 2, 3, 5, 4, 0, 3, 3, 2, 1, 2, 3, 4, 5, 1, 4, 3, 2]
>>> numpy.array(time_color)
array([0, 4, 3, 3, 2, 3, 5, 4, 0, 3, 3, 2, 1, 2, 3, 4, 5, 1, 4, 3, 2])
>>> numpy.reshape(time_color, (3, 7))
array([[0, 4, 3, 3, 2, 3, 5],
[4, 0, 3, 3, 2, 1, 2],
[3, 4, 5, 1, 4, 3, 2]])
或者如果您的time_color
数组包含len(x)
个元素,则可以重塑您的time_color
列表,如下所示(len(x)=n*m
)< / p>
>>> numpy.reshape(time_color, (m, n))
答案 1 :(得分:2)
实际上,matplotlib的散点图确实接受了颜色条的列表。 例如,以下是完全合法的,并创建一个颜色为第三维的2D图:
matplotlib.pyplot.scatter( range(0,10), range(0,10), c=range(0,10) )
如果你想要一个颜色为第四维的3D图,你可以使用相同的想法:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig) #Or: ax = fig.add_subplot(111, projection='3d')
ax.scatter( range(0,10), range(0,10), c=range(0,10) )