使用matplotlib从地形数据创建平滑的曲面图
发布时间:2020-12-20 13:08:09 所属栏目:Python 来源:网络整理
导读:我有一个代码,可以从lat,lon和elev数据创建一个3d地形表面. 我正在使用ax.plot_surface,它创建一个如下所示的地形表面: 我想平滑数据以创建一个看起来更像这样的图片: 有没有更好的方法来平滑网格所做的插值? my_data按[lat,lon,elev]大小排序(912,3) 代
我有一个代码,可以从lat,lon和elev数据创建一个3d地形表面.
我正在使用ax.plot_surface,它创建一个如下所示的地形表面: 我想平滑数据以创建一个看起来更像这样的图片: 有没有更好的方法来平滑网格所做的插值? my_data按[lat,lon,elev]大小排序(912,3) 代码如下 import os import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from scipy.interpolate import griddata fig = plt.figure() ax = Axes3D(fig) my_data = np.genfromtxt('2014_0.01_v3_HDF5.txt',delimiter = ',',skip_header = 1) my_data[my_data==0] = np.nan my_data = my_data[~np.isnan(my_data).any(axis=1)] X = my_data[:,0] Y = my_data[:,1] Z = my_data[:,2] xi = np.linspace(X.min(),X.max(),(len(Z)/3)) yi = np.linspace(Y.min(),Y.max(),(len(Z)/3)) zi = griddata((X,Y),Z,(xi[None,:],yi[:,None]),method='nearest') xig,yig = np.meshgrid(xi,yi) surf = ax.plot_surface(xig,yig,zi,cmap='gist_earth') fig.colorbar(surf,shrink=0.5,aspect=5) ax.set_title('2014 ATM Data 0.01 Degree Spacing') ax.set_xlabel('Latitude') ax.set_ylabel('Longitude') ax.set_zlabel('Elevation (m)') ax.set_zlim3d(0,8000) 解决方法
您可以将插值方法从最近的立方体替换为立方体.它为您提供了更好的表面.
zi = griddata((X,method='cubic') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |