python - 更改投影的 Matplotlib 轴的背景颜色

标签 python matplotlib cartopy

我正在尝试使用 Cartopy 创建一个图形,它需要在未投影的轴上绘制投影轴。

这是一个尽可能简单的代码版本,它用坐标轴上的内容替换背景颜色:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

#Setup figure
fig = plt.figure()

#Unprojected axis
ax1 = fig.add_subplot(111, axisbg='b')

#Projected axis
ax2 = fig.add_subplot(111, axisbg='None', projection=ccrs.Mercator())

plt.show()

这不是让蓝轴可见,而是产生了这个: enter image description here 从上面的代码中删除 projection=ccrs.Mercator() 参数会产生以下预期结果: enter image description here

如何使投影轴背景透明?

谢谢!

编辑: 我已经尝试了这些其他设置背景透明的方法,但没有成功:

ax2 = fig.add_subplot(111, axisbg='None', alpha=0, projection=ccrs.Mercator())
ax2.patch.set_facecolor('none')
ax2.patch.set_alpha(0)

最佳答案

您可以使用 imshow() 将图像投影到 map 的背景上。为此,Cartopy 使用 stock_img() 方法。

您还可以通过使用 NumPy 创建 2x2 像素图像并将其投影到整个 map 范围来获得纯色背景:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.feature import LAND
    
ax = plt.axes(projection=ccrs.PlateCarree())

# Set RGB value to ocean colour
ax.imshow(np.tile(np.array([[[200, 200, 255]]], 
          dtype=np.uint8), [2, 2, 1]),
      origin='upper',
      transform=ccrs.PlateCarree(),
      extent=[-180, 180, -90, 90])

ax.add_feature(LAND)
ax.coastlines()

plt.show()

enter image description here

关于python - 更改投影的 Matplotlib 轴的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200438/

相关文章:

Python 相当于 getOrElse

python - 如何正确地将标准输出、日志记录和 tqdm 重定向到 PyQt 小部件中

python - 图例框中文本和图标的对齐(matplotlib)

python - 多个散点图的一个颜色条

python - 使用 ccrs.epsg() 使用 EPSG 4326 坐标系绘制邮政编码周长形状文件

python - 使用 Cartopy 插入城市地区的温度数据

python - 如何将 conda 包导入 google colab?

python - 为什么在kill -9后出现Ghost Process

python - 通过在 Jupyter 中内联重置 Jupyter 中的 Matplotlib 图形大小

python - 当分辨率 > 1 时,Tkinter 缩放和 float