pyplot change python matplotlib

python - change - Hay una clase matplotlib.axes.AxesSubplot, pero el módulo matplotlib.axes no tiene ningún atributo AxesSubplot



plt axis() python (1)

Heh Esto se debe a que no hay clase AxesSubplot ... hasta que se necesita una, cuando se construye desde SubplotBase . Esto se hace con magia en axes.py :

def subplot_class_factory(axes_class=None): # This makes a new class that inherits from SubplotBase and the # given axes_class (which is assumed to be a subclass of Axes). # This is perhaps a little bit roundabout to make a new class on # the fly like this, but it means that a new Subplot class does # not have to be created for every type of Axes. if axes_class is None: axes_class = Axes new_class = _subplot_classes.get(axes_class) if new_class is None: new_class = new.classobj("%sSubplot" % (axes_class.__name__), (SubplotBase, axes_class), {''_axes_class'': axes_class}) _subplot_classes[axes_class] = new_class return new_class

Así que está hecho sobre la marcha, pero es una subclase de SubplotBase :

>>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> ax = fig.add_subplot(111) >>> print type(ax) <class ''matplotlib.axes.AxesSubplot''> >>> b = type(ax) >>> import matplotlib.axes >>> issubclass(b, matplotlib.axes.SubplotBase) True

El código

import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) print type(ax)

da la salida

<class ''matplotlib.axes.AxesSubplot''>

Entonces el codigo

import matplotlib.axes matplotlib.axes.AxesSubplot

plantea la excepción

AttributeError: ''module'' object has no attribute ''AxesSubplot''

Para resumir, hay una clase matplotlib.axes.AxesSubplot , pero el módulo matplotlib.axes no tiene ningún atributo AxesSubplot . ¿Qué diablos está pasando?

Estoy usando Matplotlib 1.1.0 y Python 2.7.3.