web-dev-qa-db-ja.com

IPythonまたはJupyter Notebookで回転可能な3Dプロットを表示する

(Mac OSX 10.10.5)

Matplotlib Webサイトから再現できます mplot3d 3D散布図のサンプルコード scatter3d_demo.py ただし、プロットは静的な画像としてレンダリングされます。グラフをクリックして動的に回転して3Dプロットデータを表示することはできません。

サンプルコードを使用して静的3Dプロットを達成しました-(a)ターミナル内からipython、(b)ターミナル内からipythonノートブック、(c)Anacondaランチャーから起動されたipythonノートブックを使用します。

想定される知識として、非常に基本的なステップが欠けていると思います。

過去の学習で、プロットはGUI 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インターフェイス」)は、標準のPython Tk GUIツールキットへのインターフェイスです。Tkとtkinterは、ほとんどのUNIXプラットフォームとWindowsシステムで使用できます。

ただし、これはGUIプログラムの開発に関連していると思うので、これが適切かどうかはわかりません。 (正しい、これはソリューションには必要ありませんでした。)

52
Cam_Aust

つかいます %matplotlib notebook の代わりに %matplotlib inline IPythonノートブックに埋め込まれたインタラクティブな図を取得するには、最新バージョンのmatplotlib(1.4+)およびIPython(3.0+)が必要です。

116
jakevdp

Windows(Windows 8.1 for me)の場合、次を使用できます。

%matplotlib inline  
%matplotlib notebook
%pylab

代わりに。

注:ALL THREEコマンドを一緒に実行する必要があります、またはkernal diedエラーが発生し、ノートブックが自動的に再起動します。

2
Statham

私のようにさらに慣れていない人のために、簡単な答えは次のとおりです。

%matplotlib(上記のインポート)(新しいウィンドウのインタラクティブなグラフの場合)

インポートmatplot ...など.

%matplotlibノートブック(JupyterNotebook内のグラフの相互作用用

インポートなど...

インポートなど...

0
Alex

Windowsでは、以下を使用してノートブックを起動することにより、プロットを対話モードで表示できます。

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

必要に応じて、ノートブックをシャットダウンして再起動します。

0
oscar1919