最后我想要的是平滑的彩色地图,上面绘有轮廓。我们的想法是尽可能多地保留3D凸包的信息。
问题是到目前为止我开发的代码并不适用于所有输入。
实施例
如果我设置tricontourf()整数参数,让我们说8并提供10个输入文件,我将获得8个图,这些图是OK,但是2将是纯色。 接下来,如果我将参数更改为9,我将获得7个良好和3个奇数。第一步中的一些优点现在是错误的!
理想情况下,我希望将此参数固定为~25,以便平滑色彩图。
看看图片:
This is wrong, int parameter = 9
this is what I want but smoother, int parameter 8
对我来说重要的是基于凸壳进行三角测量。
import matplotlib.pyplot as plt
import numpy as np
import sys, os, time, math
from scipy.spatial import ConvexHull
from matplotlib.tri import Triangulation
import matplotlib.cm as cm
# get covex hull data and save them to an array
cvx = []
dataX = []
for filename in sys.argv[1:]:
X = np.genfromtxt(filename,delimiter="", skip_header=2)
dataX.append(X)
hull = ConvexHull(X)
cvx.append(hull)
for idx,filename in enumerate(sys.argv[1:]):
# start plotting data
x, y, z = dataX[idx].T
# triangulation based on a convex hull
simpl = cvx[idx].simplices
tri = Triangulation(x, y, triangles=simpl)
# plot lines (triangles)
plt.triplot(tri, color='k')
# plot contour lines based on convex hull facets
plt.tricontour(x, y, z, 5, linewidths=0.5, colors='k', triangles=simpl)
# plot colour map
plt.tricontourf(x, y, z, 8, cmap=plt.cm.rainbow, triangles=simpl)
plt.show()