我使用Basemap来绘图,它没有引入自己的坐标轴类型,而是使用一些极端的数学方法来进行地理绘图。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(); #use instead of fig because it inits an axis too
divider = make_axes_locatable(ax); #prep to add an axis
cax = divider.append_axes('right', size='2.0%', pad=0.15); #make a color bar axis
我更喜欢这样做,因为它将新轴保持在原始轴的边界内,这使得排列其他子图(通过使用相同的divider.append_axes(...)
调用)变得容易,并确保新的颜色条轴不会很容易地从图中剪切掉。
但由于底图是贬值,我试图移动到Cartopy。不幸的是与Cartopy类似的代码:
import matplotlib.pyplot as plt
import cartopy as cartopy
fig, ax = plt.subplots(); #use instead of fig because it inits an axis too
ax = plt.axes(projection=cartopy.crs.PlateCarree()); #redefine the axis to be a geographical axis
divider = make_axes_locatable(ax); #prep to add an axis
cax = divider.append_axes('right', size='2.0%', pad=0.15); #make a color bar axis
给出错误:
KeyError: 'map_projection'
由于在Cartopy下ax
轴被更改为Cartopy轴,附加的cax
轴也是Cartopy轴。如果我提供map_projection=cartopy.crs.PlateCarree()
,代码运行,但我不希望它是Cartopy轴,我希望它是一个颜色条(如果我将其用作颜色条,Cartopy轴会出错)。
如何append_axes
但不继承Cartopy轴类型?
此外,我发现使用以下方法也不是很好:
import matplotlib.pyplot as plt
import cartopy as cartopy
fig, ax = plt.subplots(); #use instead of fig because it inits an axis too
ax = plt.axes(projection=cartopy.crs.PlateCarree()); #redefine the axis to be a geographical axis
cax = ax.inset_axes((1.02, 0, 0.02, 1)); #make a color bar axis
但是那个cax
不是原始轴边界的一部分,这使得它对排列其他使用divider.append_axes()
方法的子图毫无用处,并且颜色条可以裁剪掉图的边缘,因为它浮动在“白色”中。
1条答案
按热度按时间5kgi1eie1#
我在这篇帖子里找到了答案:https://stackoverflow.com/a/52447676/21257881: