从 Matplotlib.pcolormesh() 图中提取颜色数据以转换为 .kml 或其他格式

Extract color data from Matplotlib.pcolormesh() plot for conversion to .kml or other format

我有一个程序可以在各种地图软件上绘制数据,例如 Google Earth 和 Leaflet。

我需要在 Google 地球上表示某个数据集,该数据集存储为一个 numpy 数组,在相应的 kml 文件中使用正方形多边形作为数据格式。

Pcolormesh 生成颜色方块网格。此外,它还允许您提取每个正方形顶点的坐标。如果我随后将这些输入到 simplekml 库的多边形生成器中,效果很好,只是我不知道如何从 matplotlib 中提取颜色数据并将其传递给我正在创建的对象。我一直试图从文档中找出答案。

这是我目前所拥有的。该示例使用 Cartopy,但我认为只有 matplotlib 导致了我的问题。

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.examples.waves import sample_data
import pdb
import simplekml

ax = plt.axes(projection=ccrs.Robinson())

ax.set_global()

lons, lats, data = sample_data(shape=(20, 40))

default_cmap = 'RdBu_r'

def make_path_polygons(mesh):
    kml = simplekml.Kml()
    paths = mesh.get_paths()
    for path in paths:
        kml.newpolygon(name="newpoly", outerboundaryis=path.vertices)
        #NEED TO SET COLOR HERE
    kml.save("gridpaths.kml")

mesh = plt.pcolormesh(lons, lats, data, transform=ccrs.PlateCarree(), cmap=default_cmap)
print(mesh.get_facecolors()) #Result: array([[0.1215, 0.4667, 0.7058]]), I would have hoped this returned a sequence corresponding to the coordinate data, but seems it does not
make_path_polygons(mesh)

ax.coastlines()
ax.gridlines()

plt.savefig("pcm.png")

这是我的 matplotlib 图:

这里是 Google 地球中的 .kml:

我明白为什么 GE 结果是无色的,因为现在我只是将坐标数据传递给 simplekml,没有别的。但是如何从 mpl.QuadMesh 对象中获取数据呢?任何帮助将不胜感激,谢谢。

完整的颜色信息应该可以通过 QuadMesharray 以及正在使用的颜色图和标准获得。

mesh = plt.pcolormesh(...)

colors = mesh.cmap(mesh.norm(mesh.get_array()))