python等值线平滑函数_Python不规则x、y数据在原始域上的
等值线绘制
我在“x-cord”、“y-cord”、“value”列下有包含点的⽂件。这些是不规则间隔的。我试图做⼀个等值线图的“价值”和叠加在原来的领域。我放弃了在pgfplots和matlab中实现这⼀点的尝试,并想试试python。⽤这些脚本中的任何⼀个都可以。python脚本如下import numpy as np
linspace numpyfrom scipy.interpolate import griddata
import matplotlib.pyplot as plt
import numpy.ma as ma
from numpy.random import uniform, seed
from scipy.spatial import ConvexHull
#
# Loading data
filename = "strain.dat"
coordinates = []
x_c = []
y_c = []
z_c = []
xyz = open(filename)
title = adline()
for line in xyz:
x,y,z = line.split()
coordinates.append([float(x), float(y), float(z)])
x_c.append([float(x)])
y_c.append([float(y)])
z_c.append([float(z)])
xyz.close()
#
# Rehaping and translating data
x_c=np.ravel(np.array(x_c))
y_c=np.ravel(np.array(y_c))
z_c=np.ravel(np.array(z_c))
x_c = x_c-100.0
y_c = y_c-100.0
#
# Checking the convex hull
lumn_stack((x_c,y_c))
hull = ConvexHull(points);
plt.plot(points[hull.vertices,0], points[hull.vertices,1], 'r--', lw=2)
plt.scatter(x_c, y_c, marker='o', s=5, zorder=10)
#
# Mapping the irregular data onto a regular grid and plotting
xic = np.linspace(min(x_c), max(x_c), 1000)
yic = np.linspace(min(y_c), max(y_c), 1000)
zic = griddata((x_c, y_c), z_c, (xic[None,:], yic[:,None]))
CS = ur(xic,yic,zic,15,linewidths=0.5,colors='k')
CS = urf(xic,yic,zic,15,summer)
#
#plt.scatter(x_c, y_c, marker='o', s=5, zorder=10)
plt.axis('equal')
plt.savefig('foo.pdf', bbox_inches='tight')
plt.show()
输出看起来像
问题是⽹格数据使⽤了⼀个凸壳,⽽这个凸壳超出了不规则数据的边缘。有没有办法把原始点边界外的⽹格数据点的值设为零?在编辑
最后我认输了,回到了Matlab。我必须把数据导出到pgfplots,才能得到⼀个好的绘图。我想出的密码是
^{pr2}$
这是⽣成的图像。
如果有⼈能⽤Python做类似的事情,我很乐意接受这个答案。在
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论