notebook examples macos matplotlib plot jupyter-notebook ipython-notebook ipython

macos - examples - Visualización de diagramas 3D giratorios en IPython o Jupyter Notebook



jupyter server (4)

(Mac OSX 10.10.5)

Puedo reproducir desde el sitio web de mplot3d el código de ejemplo para un diagrama de dispersión 3D scatter3d_demo.py , sin embargo, el diagrama se representa como una imagen estática. No puedo hacer clic en el gráfico y rotar dinámicamente para ver los datos trazados en 3D.

He logrado el diagrama 3D estático usando el código de ejemplo: usando (a) ipython desde la Terminal, (b) la notebook ipython desde la terminal y (c) la notebook ipython lanzada desde el iniciador Anaconda.

Creo que me estoy perdiendo algún paso muy básico como conocimiento asumido.

En el aprendizaje anterior, el trazado ha abierto una aplicación GUI Python que tiene un visor de gráficos. (La solución 2 en el código que se muestra a continuación abre esto). ¿Quizás necesito saber el código para exportar el gráfico de salida a ese método de visualización? (Sí, use% matplotlib (solo) como primera línea sin línea o cuaderno como se muestra en los comentarios en el bloque de código a continuación).

Como ejemplo en el cuaderno de ipython:

# These lines are comments # Initial setup from an online python notebook tutorial is below. # Note the first line "%matplotlib inline" this is how the tutorial has it. # Two solutions 1. use: "%matplotlib notebook" graphs appear dynamic in the notebook. # 2. use: "%matplotlib" (only) graphs appear dynamic in separate window. # ( 2. is the best solution for detailed graphs/plots. ) %matplotlib inline import pandas as pd import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D pd.set_option(''html'',False) pd.set_option(''max_columns'',30) pd.set_option(''max_rows'',10) # What follows is a copy of the 3D plot example code. # Data is randomly generated so there is no external data import. def randrange(n, vmin, vmax): return (vmax-vmin)*np.random.rand(n) + vmin fig = plt.figure() ax = fig.add_subplot(111, projection=''3d'') n = 100 for c, m, zl, zh in [(''r'', ''o'', -60, -25), (''b'', ''^'', -30, -5)]: xs = randrange(n, 23, 50) ys = randrange(n, 0, 100) zs = randrange(n, zl, zh) ax.scatter(xs, ys, zs, c=c, marker=m) ax.set_xlabel(''X Label'') ax.set_ylabel(''Y Label'') ax.set_zlabel(''Z Label'') plt.show()

¿Alguien puede identificar lo que me falta?

Mirando la documentación de Python 3.3.6, sección 25.1 quizás el paquete tkinter ...

El paquete tkinter ("interfaz Tk") es la interfaz estándar de Python para el kit de herramientas Tk GUI. Tanto Tk como tkinter están disponibles en la mayoría de las plataformas Unix, así como en los sistemas Windows.

Sin embargo, creo que esto se relaciona con el desarrollo de programas GUI, por lo que no estoy seguro de que sea relevante. (Correcto, esto no era necesario para la solución).


En Windows, puedo hacer que la trama se muestre en modo interactivo iniciando el cuaderno con:

from matplotlib import use use("Qt5Agg") import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D ...

Si es necesario, apague su computadora portátil y reiníciela.


Para Windows (Windows 8.1 para mí), puede usar

%matplotlib inline %matplotlib notebook %pylab

en lugar.

Nota: Debe ejecutar TODOS LOS TRES comandos juntos , o obtendrá un error de muerte de núcleo y luego el cuaderno se reiniciará automáticamente.


Para aquellos con aún menos familiaridad, como yo, la respuesta rápida es:

% matplotlib (importaciones anteriores) (para gráficos interactivos en una nueva ventana)

importar matplot ... etc.

% matplotlib notebook (para interacción gráfica dentro de JupyterNotebook)

importar, etc ...

importar, etc ...


Use %matplotlib notebook lugar de %matplotlib inline para obtener figuras interactivas incrustadas en el notebook IPython; esto requiere versiones recientes de matplotlib (1.4+) e IPython (3.0+).