繁体   English   中英

使用 cartopy 在背景地图上绘制数组

[英]Plotting array over background map using cartopy

我正在尝试使用 cartopy 在背景地图图块上绘制一个 numpy 数组。 当包含背景地图时,数组不可见。

我正在使用cimgtgeo_axes.add_image()添加背景地图图块。 在使用plt.scatter()绘制点之前,此方法对我plt.scatter() 我尝试了几种投影(PlateCarree、Mercator 和 EPSG32630)和地图图块(OSM、GoogleTiles)。 该数组包含 np.nans 和浮点数。

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt

# array creation
array = np.asarray([[1, np.nan, np.nan], [1, 1, 1], [2, 2, 1]])
x_coords = np.asarray([690000, 691000, 692000])
y_coords = np.asarray([4958000, 4959000, 496000])

# create figure
fig = plt.figure(figsize=(8, 6), dpi=100)

# create geo axes
projection = ccrs.epsg(32630)
geo_axes = plt.subplot(projection=projection)

# add open street map background
# when commenting the two following lines, the data array is plotted correctly
osm_background = cimgt.OSM()
geo_axes.add_image(osm_background, 14)

# plot dataset
plt.imshow(
    array,
    origin="upper",
    extent=(x_coords[0], x_coords[1], y_coords[0], y_coords[1]),
    transform=projection,
)

# show plot
plt.show()

我似乎无法找到导致问题的原因。 有没有人遇到过这个问题,或者任何人都可以看到我做错了什么?

您需要一些技巧来显示所有绘制的特征。 这是更新您的相关代码,以及显示(OSM)背景和阵列图像的输出图。

# plot dataset
plt.imshow(
    array,
    origin="upper",
    extent=(x_coords[0], x_coords[1], y_coords[0], y_coords[1]),
    transform=projection,
    alpha=0.25,  # allows the background image show-through
    zorder=10    # make this layer on top
)
# draw graticule and labels
geo_axes.gridlines(color='lightgrey', linestyle='-', draw_labels=True)

结果:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM