Ответ 1
Используйте %matplotlib notebook
вместо %matplotlib inline
, чтобы получить встроенные интерактивные данные в ноутбуке IPython - для этого требуются последние версии matplotlib (1.4+) и IPython (3.0 +).
(Mac OSX 10.10.5)
Я могу воспроизвести на веб-сайте matplotlib mplot3d пример кода для трехмерного графика рассеяния scatter3d_demo.py, однако график отображается как статическое изображение. Я не могу нажать на график и динамически поворачивать для просмотра 3D-графиков данных.
Я достиг статического трехмерного графика, используя пример кода - используя (a) ipython из терминала, (b) записную книжку ipython из терминала и (c) записную книжку ipython, запущенную из средства запуска Anaconda.
Я думаю, что я пропускаю какой-то очень простой шаг в качестве предполагаемого знания.
В прошлом изучении, построение графиков открыло приложение Python с графическим интерфейсом, в котором есть средство просмотра графиков. (Решение 2 в коде, показанном ниже, открывает это.) Возможно, мне нужно знать код для экспорта выходного графика в этот метод отображения? (Да, используйте% matplotlib (только) в качестве первой строки без строки или записной книжки, как показано в комментариях в блоке кода ниже.)
Как пример в блокноте 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()
Может ли кто-нибудь определить, чего мне не хватает?
Глядя на документацию по Python 3.3.6, раздел 25.1, возможно, пакет tkinter...
Пакет tkinter ('Tk interface') - это стандартный интерфейс Python для инструментария Tk GUI. Как Tk, так и tkinter доступны на большинстве платформ Unix, а также в системах Windows.
Я думаю, что это относится к разработке программ с графическим интерфейсом, поэтому я не уверен, что это актуально. (Правильно, это не было необходимо для решения.)
Используйте %matplotlib notebook
вместо %matplotlib inline
, чтобы получить встроенные интерактивные данные в ноутбуке IPython - для этого требуются последние версии matplotlib (1.4+) и IPython (3.0 +).
Для Windows (Windows 8.1 для меня) вы можете использовать
%matplotlib inline
%matplotlib notebook
%pylab
вместо этого.
Примечание: Вы должны выполнить команду ВСЕ ТРИ вместе, иначе вы получите ошибку "умерла", а затем ноутбук автоматически перезагрузится.
В Windows я могу отобразить сюжет в интерактивном режиме, запустив блокнот с помощью:
from matplotlib import use
use("Qt5Agg")
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
...
При необходимости выключите ноутбук и перезапустите его.
Для тех, кто еще менее знаком, как я, быстрый ответ:
% matplotlib (над импортом) (для интерактивных графиков в новом окне)
импорт матплота... и т.д.
% matplotlib notebook (для взаимодействия с графами в самом JupyterNotebook
импорт и т.д.
импорт и т.д.