77

(Mac OS X 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 インターフェース」) は、Tk GUI ツールキットに対する標準の Python インターフェースです。Tk と tkinter はどちらも、ほとんどの Unix プラットフォームと Windows システムで利用できます。

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

4

6 に答える 6

151

%matplotlib notebookIPython ノートブックに埋め込まれたインタラクティブな図を取得する代わりに使用%matplotlib inlineします。これには、最新バージョンの matplotlib (1.4+) と IPython (3.0+) が必要です。

于 2015-10-30T16:33:06.303 に答える
14

Colab 環境では、HTML() 関数が最も便利であることがわかりました。

ここに画像の説明を入力

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from numpy.random import rand
from IPython.display import HTML
from matplotlib import animation

m = rand(3,3) # m is an array of (x,y,z) coordinate triplets

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for i in range(len(m)): # plot each point + it's index as text above
  x = m[i,0]
  y = m[i,1]
  z = m[i,2]
  label = i
  ax.scatter(x, y, z, color='b')
  ax.text(x, y, z, '%s' % (label), size=20, zorder=1, color='k')

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

def animate(frame):
  ax.view_init(30, frame/4)
  plt.pause(.001)
  return fig

anim = animation.FuncAnimation(fig, animate, frames=200, interval=50)
HTML(anim.to_html5_video())
于 2020-12-01T16:08:39.307 に答える
0

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

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

import matplot...など

%matplotlib ノートブック(JupyterNotebook 自体内でのグラフ操作用)

インポートなど...

インポートなど...

于 2019-08-21T19:06:09.990 に答える