(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.
Я думаю, что это относится к разработке программ с графическим интерфейсом, поэтому я не уверен, что это актуально. (Правильно, это не было необходимо для решения.)