And*_*iel 5 python gradient matplotlib triangulation
我正在尝试生成一组点的 3D 可视化。我需要根据这些点生成的三角测量来创建此可视化。此外,我的数据的第三个维度定义了颜色。
更准确地说,我的数据如下:
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
Run Code Online (Sandbox Code Playgroud)
我想要的结果是(它是使用 Latex/pgfplotslibrary 生成的):
现在我想使用 python 生成相同的可视化。不幸的是,我的问题是提供每个三角形/面内颜色的平滑过渡,如上图所示。我知道如何使用 tripcolor 函数和选项 shading='gouraud' 生成平滑过渡。有没有类似的东西可以使用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()
Run Code Online (Sandbox Code Playgroud)
上面代码的结果是: