matplotlib的add_subplot为何官方文档中找不到projection参数的'3d'可选值?
问题描述
我在使用Matplotlib的add_subplot方法时,参考官方示例设置projection='3d'可以正常运行,示例代码如下:
import matplotlib.pyplot as plt import numpy as np # 固定随机种子保证结果可复现 np.random.seed(19680801) fig = plt.figure() ax = fig.add_subplot(projection='3d') x, y = np.random.rand(2, 100) * 4 hist, xedges, yedges = np.histogram2d(x, y, bins=4, range=[[0, 4], [0, 4]]) # 构造16个柱状图的锚点位置数组 xpos, ypos = np.meshgrid(xedges[:-1] + 0.25, yedges[:-1] + 0.25, indexing="ij") xpos = xpos.ravel() ypos = ypos.ravel() zpos = 0 # 构造16个柱状图的尺寸数组 dx = dy = 0.5 * np.ones_like(zpos) dz = hist.ravel() ax.bar3d(xpos, ypos, zpos, dx, dy, dz, zsort='average') plt.show()
但我查阅add_subplot的官方文档时,projection参数的可选枚举值只标注了 {None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str},没有出现'3d'这个选项,为什么文档里找不到'3d'这个投影类型?
解答
'3d'不是Matplotlib核心库原生内置的投影类型,是由可选扩展模块mpl_toolkits.mplot3d提供的扩展能力。- 当你调用
add_subplot(projection='3d')时,Matplotlib会自动加载mpl_toolkits.mplot3d模块,该模块加载时会自动将'3d'注册到全局投影注册表中,因此可以正常识别使用。 add_subplot官方文档的枚举值仅列出了核心库自带的投影类型,末尾的str类型就是预留用于匹配所有扩展模块、第三方工具注册的自定义投影名称,所以不会单独把'3d'列在核心API的参数枚举里。
内容的提问来源于stack exchange,提问作者Troy
相关产品推荐
相关产品推荐

