matplotlib.mplot3d多维数据集的面上的底图

问题描述

| 就像标题所示,我正在尝试在matplotlib.mplot3d线图的z = 0面上绘制底图地图。我知道Axes3D对象能够在z = 0曲面上绘制(通过Axes3D.plot,Axes3D.scatter等),但是我不知道如何使用底图对象进行绘制。希望下面的代码能清楚地说明我的需求。任何想法将不胜感激!
import matplotlib.pyplot as pp
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.basemap import Basemap

# make sample data for 3D lineplot
z = np.linspace(-2,2,100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

# make the 3D line plot
FIG = ct.pp.figure()
AX = Axes3D(FIG)
AX.plot(x,y,z,\'-b\')

# make the 2D basemap
### NEEDS TO SOMEHOW BE AT z=0 IN FIG
M = ct.Basemap(projection=\'stere\',width=3700e3,height=2440e3,lon_0=-5.0,lat_0=71.0,lat_ts=71.0,area_thresh=100,resolution=\'c\')
PATCHES = M.fillcontinents(lake_color=\'#888888\',color=\'#282828\')
    

解决方法

        只需将地图作为3d集合添加到Axes3D实例即可:
import numpy as np
import matplotlib.pyplot as pp
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.basemap import Basemap

theta = np.linspace(-4 * np.pi,4 * np.pi,100)
z = np.linspace(-500,500,100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

FIG = pp.figure()
AX = Axes3D(FIG)
AX.plot(x,y,z,\'-b\')

M = Basemap(projection=\'stere\',width=3700e3,height=2440e3,lon_0=-5.0,lat_0=71.0,lat_ts=71.0,area_thresh=100,resolution=\'c\')
AX.add_collection3d(M.drawcoastlines())
AX.grid(True)

pp.draw()
pp.show()
    ,        
AX.add_collection3d(M.drawcoastlines())
起作用但是
PATCHES = M.fillcontinents(lake_color=\'#888888\',color=\'#282828\')
不起作用。 添加颜色填充后,您将收到类似以下错误:\“ AttributeError:\'多边形\'对象没有属性\'do_3d_projection \'\”
M.fillcontinents(lake_color=\'#888888\',color=\'#282828\')`
返回多边形数组,而不是add_collection()所需的输入之一。
collect.PatchCollection()
似乎也不起作用。 那么,如何将M.fillcontinents(lake_color = \'#888888 \',color = \'#282828 \')添加到3D图中呢?     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...