我有一个用3d绘制的点列表,我希望有一个渐变颜色方案。这可能吗?如果是这样,怎么办呢?我在matplotlib网站上尝试了一些例子,但没有一个工作。
Datagrid.txt由3列数字组成,因此x,t,u
是3列向量,并在txt文件中包含受尊重的列。
from mpl_toolkits.mplot3d import axes3d
import numpy as np
import pylab
x, t, u = np.loadtxt("datagrid.txt", unpack = True)
fig = pylab.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.plot(x, t, u)
pylab.show()
答案 0 :(得分:1)
而不是ax.plot
,请尝试ax.plot_surface。
修改强>
在与OP讨论后,我们发现数据是在1D列向量中给出的,但是plot_surface
需要2D数组。数据按x
值进行分组,其中每个x
值的增加值为t
。必须将数据重新整形为2D数组,如下所示:
x = x.reshape((-1, 701))
t = t.reshape((-1, 701))
u = u.reshape((-1, 701))
然后,要获得渐变,需要指定色彩映射:
ax.plot_surface(x, t, u, cmap=pylab.get_cmap('jet'))
请求'jet'色彩映射的地方。可以使用matplotlib的色彩映射列表here。