!我有 (x,y,z) 形式的值。通过创建一个 list_plot3d 图,我可以清楚地看到它们的间距不是很均匀。它们通常在 xy 平面上形成 3 到 5 个点的小“斑点”。因此,为了使插值和最终的“轮廓”图更好,或者我应该说更平滑(?),我是否必须创建一个矩形网格(如棋盘上的正方形),以便数据块以某种方式“平滑”?我知道这对某些人来说可能是微不足道的,但我是第一次尝试这个,我有点挣扎。我一直在查看像 scipy.interplate.interp2d 这样的 scipy 包,但最后生成的图表非常糟糕。对于像我这样的业余爱好者来说,也许是一个关于 sagemath 中 2d 插值的简短教程?一些忠告?谢谢你。
编辑:
https://docs.google.com/file/d/0Bxv8ab9PeMQVUFhBYWlldU9ib0E/edit?pli=1
这主要是它与此消息一起生成的图表类型:
Warning: No more knots can be added because the number of B-spline
coefficients
already exceeds the number of data points m. Probably causes:
either
s or m too small. (fp>s)
kx,ky=3,3 nx,ny=17,20 m=200 fp=4696.972223 s=0.000000
要获取此图,我只需运行以下命令:
f_interpolation = scipy.interpolate.interp2d(*zip(*matrix(C)),kind='cubic')
plot_interpolation = contour_plot(lambda x,y:
f_interpolation(x,y)[0], (22.419,22.439),(37.06,37.08) ,cmap='jet', contours=numpy.arange(0,1400,100), colorbar=True)
plot_all = plot_interpolation
plot_all.show(axes_labels=["m", "m"])
矩阵(c)可以是一个巨大的矩阵,如 10000 X 3 甚至更像 1000000 x 3。即使数据较少,如我现在附上的图片,矩阵(C)只有 200 x 3 的情况下,坏图的问题仍然存在. 这就是为什么我开始认为除了程序可能出现故障之外,我使用此命令的方法可能完全错误,因此我有理由寻求有关使用网格的建议,而不仅仅是“将我的数据投入到命令中。