gpt4 book ai didi

使用 matplotlib/basemap 进行 Python 插值

转载 作者:太空狗 更新时间:2023-10-30 02:44:13 33 4
gpt4 key购买 nike

我是编程新手,很难理解插值。我能找到的每一个试图解释它的来源都非常神秘(尤其是 basemap/matplotlib 的包特定站点)。我正在使用 matplotlib 的 basemap 进行映射,但是我的数据的性质是它以 5 度乘 5 度的 block (lat lon block )形式出现。我想通过插值来平滑 map 。

所以首先这是我的代码。

from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap, addcyclic

#load the netcdf file into a variable
mar120="C:/Users/WillEvo/Desktop/sec_giptie_cpl_mar_120.nc"

#grab the data into a new variable
fh=Dataset(mar120,mode="r")

#assign model variable contents to python variables
lons=fh.variables['lon'][:]
lats=fh.variables['lat'][:]
test=fh.variables['NE'][:]

#specifying which time and elevation to map
ionst=test[12,0]

#close the netCDF file
fh.close()

# get rid of white stripe on map
ionst, lons=addcyclic(ionst, lons)

#map settings
m=Basemap(llcrnrlon=-180, llcrnrlat=-87.5, urcrnrlon=180, urcrnrlat=87.5,rsphere=6467997, resolution='i', projection='cyl',area_thresh=10000, lat_0=0, lon_0=0)

#Creating 2d array of latitude and longitude
lon, lat=np.meshgrid(lons, lats)
xi, yi=m(lon, lat)

#setting plot type and which variable to plot
cs=m.pcolormesh(xi,yi,np.squeeze(ionst))

#drawing grid lines
m.drawparallels(np.arange(-90.,90.,30.),labels=[1,0,0,0],fontsize=10)
m.drawmeridians(np.arange(-180.,181.,30.), labels=[0,0,0,1],fontsize=10)

#drawing coast lines
m.drawcoastlines()

#color bar
cbar=m.colorbar(cs, location='bottom', pad="10%")
cbar.set_label("Elecron Density cm-3")

#showing the plot
plt.show()

那么现在,我怎样才能轻松地插入我的数据来平滑它呢?我试图调用 Basemap.interp 但是我收到一条错误消息,指出 basemap 没有属性 interp。

我对我用来插入数据的东西非常公正,我只是真的需要有人像我很笨一样向我解释这一点。

另请注意,我正在学习绘制诸如标签之类的详细信息,目前我还不太担心。下面是上面的代码输出的示例 map 。

enter image description here

最佳答案

为了解决问题,我会使用 imshow 而不是 pcolormesh

例如:

from pylab import *

data = random((3,3))
figure(1)
imshow(data, interpolation='none')

plt.show()

给出:enter image description here

imshow(data, interpolation='bicubic')

给出:

enter image description here

帮助页面列出了所有可能的插值:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow

关于使用 matplotlib/basemap 进行 Python 插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30510663/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com