2016-06-25 11 views
0

IPython ноутбук 3.0.0Matplotlib окна киосков с использованием IPython ноутбук

Matplotlib 1.4.3

OS X 10.11.4

Я создаю интерактивный 3D-график рассеяния 3D-куба данных. Я включил здесь игрушечный пример, который генерирует те же проблемы, с которыми я сталкиваюсь, пытаясь построить мой куб данных.

Если я создаю окно matplot за пределами ноутбука, когда я вручную закрываю его (щелкнув по красному x), он останавливается с «колесом», пока я не заставлю выйти.

#Generate matplot window outside of the notebook 

import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 

#from matplot3d tutorial 

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', -50, -25), ('b', '^', -30, -5)]: 
    xs = randrange(n, 23, 32) 
    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() 

Я попытался с помощью mpld3 в записной книжке, но не интерактивных графических дисплеев наряду с сообщением об ошибке

«TypeError: массив ([2, 20]) не JSON сериализации»

#Use mpld3 within notebook 

import matplotlib.pyplot as plt 
import numpy as np 
import mpld3 
from mpl_toolkits.mplot3d import Axes3D 
mpld3.enable_notebook() 

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', -50, -25), ('b', '^', -30, -5)]: 
    xs = randrange(n, 23, 32) 
    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') 

Некоторое быстрое исследование сериализации JSON было непродуктивным.

Каков наилучший способ создания интерактивного 3D-графика матплотблиба, который не остановится?

ответ

0

В IPython, даже если вы не используете встроенный сервер, лучше всего использовать %matplotlib. Это говорит, что IPython и matplotlib работают вместе с eventloops и должны помочь с зависанием. Для того, чтобы использовать GUI бэкенд по умолчанию, используйте:

%matplotlib 

Или указать Qt бэкенд:

%matplotlib qt 

Это исключает необходимость plt.show() и блокировки ядра, когда участки втягиваются.

Для получения наилучших результатов запустите это в своей первой ячейке вашего ноутбука самостоятельно перед любыми командами построения.

+1

Использование '% matplotlib' не дает другого результата. Я все еще не могу закрыть внешнее окно matplotlib без его остановки, пока я не выйду из игры и не убью ядро. – astromonerd

 Смежные вопросы

  • Нет связанных вопросов^_^