等高线/散点图-插值数据不覆盖整个散点图

问题描述 投票:0回答:1

[我正在尝试创建一个散点图上显示插值的地图,到目前为止我的代码是


# define map extent
lllon = dd
lllat = bb
urlon = cc
urlat = aa

# Set up Basemap instance
m = Basemap(
    projection = 'merc',
    llcrnrlon = lllon, llcrnrlat = lllat, urcrnrlon = urlon, urcrnrlat = urlat,
    resolution='h')

# transform lon / lat coordinates to map projection
newdf['LONGITUDE'], newdf['LATITUDE'] = m(*(newdf['LONGITUDE'].values, newdf['LATITUDE'].values))

# grid data
#numcols, numrows = count_col, count_row
#xi = np.linspace(dd, cc, numcols)
#yi = np.linspace(bb, aa, numrows)
#xi, yi = np.meshgrid(xi, yi)

count_row = newdf.shape[0]  # gives number of row count
count_col = newdf.shape[1]  # gives number of col count

xi = np.linspace(newdf['LONGITUDE'].min(), newdf['LONGITUDE'].max(), count_col)
yi = np.linspace(newdf['LATITUDE'].min(), newdf['LATITUDE'].max(), count_row)
xi, yi = np.meshgrid(xi, yi)

x, y, z = newdf['LONGITUDE'].values, newdf['LATITUDE'].values, newdf['MUD_WGHT'].values
#zi = griddata(x, y, z, xi, yi)
zi = griddata((x,y),z,(xi,yi),method='linear')

# interpolate
#x, y, z = newdf['LONGITUDE'].values, newdf['LATITUDE'].values, newdf['MUD_WGHT'].values
#zi = griddata((x,y),z,(xi,yi),method='linear')

# draw map details
m.drawmapboundary(fill_color = 'white')
m.fillcontinents(color='#C0C0C0', lake_color='#7093DB')
m.drawcountries(
    linewidth=.75, linestyle='solid', color='#000073',
    antialiased=True,
    ax=ax, zorder=3)

m.drawparallels(
    np.arange(lllat, urlat, 2.),
    color = 'black', linewidth = 0.5,
    labels=[True, False, False, False])
m.drawmeridians(
    np.arange(lllon, urlon, 2.),
    color = '0.25', linewidth = 0.5,
    labels=[False, False, False, True])

# contour plot
con = m.contourf(xi, yi, zi, zorder=4, alpha=0.6, cmap='RdPu')
# scatter plot
m.scatter(
    newdf['LONGITUDE'],
    newdf['LATITUDE'],
    color='#545454',
    edgecolor='#ffffff',
    alpha=.75,
    s=50 * norm(newdf['MUD_WGHT'].values),
    cmap='RdPu',
    ax=ax,
    vmin=zi.min(), vmax=zi.max(), zorder=4)

# add colour bar and title
# add colour bar, title, and scale
cbar = plt.colorbar(orientation='horizontal', fraction=.057, pad=0.05)
cbar.set_label("Mud Weight - PPG")

#m.drawmapscale(
 #   24., -9., 28., -13,
  #  100,
   # units='km', fontsize=10,
    #yoffset=None,
    #barstyle='fancy', labelstyle='simple',
    #fillcolor1='w', fillcolor2='#000000',
    #fontcolor='#000000',
    #zorder=5)

plt.title("Regional Mud Weights in The Lateral")

plt.show()

结果如下:

“

如何获得插值轮廓区域以扩展到完整的散点图?我一直在关注网状网格是否存在问题,因此我不确定网状网格是否未对所有数据进行插值或绘图是否存在问题。

python pandas matplotlib contour matplotlib-basemap
1个回答
0
投票

您需要执行triangulation并使用tricontour和/或tricontourf。这是演示代码和示例图。

© www.soinside.com 2019 - 2024. All rights reserved.