导入Axes3D会改变add_subplot行为的方式 - 这是名称空间违规吗?

时间:2016-01-22 23:10:50

标签: python matplotlib

这对我来说一直是一个混乱的来源:导入Axes3D(这里只是某种python对象)似乎会改变一个不相关的函数add_subplot来自不同的模块。怎么会发生这种情况?这不违反名称空间的整个想法吗?

我的意思是:

>>> import matplotlib.pyplot as plt
>>> f = plt.figure()
>>> ax = f.add_subplot(111, projection='3d')
# Fails with ValueError: Unknown projection '3d'
>>> from mpl_toolkits.mplot3d import Axes3D
>>> ax = f.add_subplot(111, projection='3d')
# Works!

起初我认为它类似于from __future__ import print_function,然后以某种方式神奇地将一个名为print的函数引入命名空间。但是as it turns out 实际上是魔术,并且特定于__future__模块。

那么,Axes3D如何运作?

0 个答案:

没有答案