我目前有一个三轮廓等高线图,我希望对点进行插值,并在等高线图上绘制一条z值等于0的线。目前的图如下所示:
附带的代码如下所示:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import scipy.interpolate
# Load the 3D data file
data = np.genfromtxt("Ta_parameterspace_2mm.txt", skip_header=14, delimiter="\t", dtype = float)
#print(data)
reflect = data[:,0]
emiss = data[:,1]
tempdiff = data[:,4]
fig, ax = plt.subplots()
cb = ax.tricontourf(reflect, emiss, tempdiff,100, cmap = "seismic")
cbar = plt.colorbar(cb)
cbar.set_label('Temperature (K)', rotation = 270, labelpad = 13)
ax.set_xlabel('Reflectivity')
ax.set_ylabel('Emissivity')
plt.savefig('Ta_parameterplot_diff.pdf', bbox_inches='tight', format='pdf')
plt.savefig('Ta_parameterplot_diff.png', dpi=300, bbox_inches='tight', format='png')
plt.show()
正如问题开始时所提到的,我想在数据集中的点之间进行插值,以便在“温度”等于零的等值线上绘制一条线。我该怎么做呢?完整的数据文件可以在下面找到:
https://fz-juelich.sciebo.de/s/SjwZyAPB4oEerZE
1条答案
按热度按时间2skhul331#
实际上,您需要的是z值和零值的交点坐标。
我从这个答案中借用了代码:在Python中以高精度查找由(x,y)数据给出的两条曲线的交点
在您的示例中,函数
interpolated_intercept
中的三个参数为:下面是完整的代码:
然后你得到的数字: