基于边缘的渐变 - matplotlib plot_trisurf

时间:2017-10-28 02:32:23

标签: python matplotlib gradient triangulation

我正在尝试生成一组点的三维可视化。我需要根据从这些点生成的三角测量创建此可视化。此外,我的数据的第三个维度定义了颜色。

更确切地说,我的数据如下:

2.17    0.001   0.82044815
2.17    0.002   0.82345825
2.17    0.004   0.82679255
2.17    0.008   0.83334715
2.17    0.016   0.84395915
2.17    0.032   0.8584953
2.21    0.001   0.77582165
2.21    0.003   0.78520505
2.21    0.009   0.80205985
2.21    0.027   0.83085105
2.24    0.001   0.7227885
2.24    0.002   0.73391615
2.24    0.005   0.7543979
2.24    0.015   0.78798745
2.24    0.003   0.74176635
2.24    0.009   0.77064805
2.24    0.027   0.81042375
2.26    0.001   0.66545585
2.26    0.003   0.7012046
2.26    0.005   0.721067
2.26    0.009   0.7447984
2.26    0.015   0.76715245
2.26    0.027   0.794177
2.27    0.001   0.62916195
2.27    0.003   0.6774642
2.27    0.009   0.72961785
2.27    0.027   0.7861086
2.28    0.001   0.5750828
2.28    0.003   0.65059675
2.28    0.005   0.6802631
2.28    0.009   0.7145367
2.28    0.015   0.74447695
2.28    0.027   0.7774403
2.29    0.001   0.51357255
2.29    0.002   0.581053
2.29    0.003   0.6173075
2.29    0.009   0.6972096
2.29    0.027   0.76793225
2.31    0.001   0.36997965
2.31    0.002   0.474415
2.31    0.003   0.53649295
2.31    0.009   0.6587164
2.31    0.016   0.70870255
2.31    0.027   0.7482423
2.31    0.05    0.7912395
2.34    0.001   0.2204104
2.34    0.002   0.316308
2.34    0.003   0.39256745
2.34    0.004   0.45240835
2.34    0.009   0.5883453
2.34    0.016   0.6590771
2.34    0.027   0.71444205
2.34    0.05    0.7690014
2.38    0.001   0.13286995
2.38    0.002   0.1828288
2.38    0.004   0.2980268
2.38    0.008   0.4507145
2.38    0.016   0.58417075
2.38    0.032   0.6833616

我想要的结果是(它是通过使用latex / pgfplotslibrary生成的):

Expected result

现在我想使用python生成相同的可视化。不幸的是,我的问题是在每个三角形/面部内提供颜色的平滑过渡,如上图所示。我知道如何使用带有选项shading ='gouraud'的tripcolor函数生成平滑过渡。是否有类似的东西使用plot_trisurf绘制我的数据?此外,如何添加构成每个三角形的点?

我目前的代码如下:

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as mtri

dat2 = np.loadtxt("/data/data.txt")

x = dat2[:,0].astype(np.float)
y = dat2[:,1].astype(np.float)
z = dat2[:,2].astype(np.float)

triang = mtri.Triangulation(x, y)

fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_trisurf(triang, z, linewidth=0.1, antialiased=True, cmap='gray_r', shade=True)
fig.colorbar(surf)
plt.title('Triplot with trisurf')
plt.show()

上面代码的结果是:

enter image description here

0 个答案:

没有答案
相关问题