【超簡単】matplotlibで3D plot をマウスでグリグリ回そう!(by Python)

当ページのリンクには広告が含まれています。

手元のデータを3次元グラフにして、マウスでグリグリと色んな方向から見たい時ってありませんか?

C#とかVB.NETなどで同じことをする場合は結構ハードルが高く、有料のライブラリを購入するか、あるいは単体の3Dグラフ表示ツールにCSV経由でデータを流し込むくらいしか方法がありません。

しかし、Pythonのmatplotlib を使うと、これが簡単にできてしまいます。

今回は、その方法について解説したいと思います。

目次

matplotlib による3Dグラフの表示

pythonでは、matplotlib と mpl_toolkits というライブラリを組み合わせることで、下記のような3Dグラフを簡単に描くことが出来ます。

ちなみに、左ボタンを押しながらマウスを移動すると図形を見る角度が変化し、右ボタンを押しながらマウスを移動すると図を拡大/縮小することが出来ます。 

matplotについて詳細が知りたい方は、こちらの記事をご覧ください。

今回は Visual Studio Code とAnaconda Prompt 、Juypter Notebook で動作を確認しております。

一番簡単な3Dグラフの描き方

まず最初に、matplotlib からは plt を、mpl_toolkits からは Axes3D をインポートする必要があるので、次の2行を記述しておきます。

実際に3Dグラフを描くための手順は次のようになります。

add_subplot メソッドの引数で projection='3d' を指定するところがポイントです。

下記フローは散布図の例ですが、scatter メソッド以外にも局面を描画する plot_surface メソッドや、ワイヤーフレームを描画する plot_wireframe などが用意されています。

一番簡単な3Dプロットのサンプルは次の様になります。

ちなみに、3Dプロットを計算するために numpy を使っています。

上記プログラムを実行すると、下記の3Dプロットが表示されます。

jupyter Notebook でグリグリ回したい場合は、プログラムの先頭に次の1行を追加して下さい。

3Dグラフに日本語タイトルを表示する

日本語タイトルを表示するには、matplotlib が対応している日本語フォントを指定する必要があります。

下記の1行を記述することで、matplotlibの初期フォントを変更することが出来ます。

今回は、'Meiryo'を指定しました。

グラフ全体のタイトルは set_title メソッド、X,Y,Z軸のタイトルはそれぞれ set_xlabel、set_ylabel、set_zlabelを使いますが、この辺の設定は2Dグラフと同様です。

これらを含めて散布図の3Dグラフを描き直すと次の様になります。

実行した結果、次のグラフが表示されます。

ドットで3Dグラフを描く(scatter)

これは散布図を描く方法と同じで scatter メソッドに渡す値を変えただけです。

プログラムは次の通りです。

ワイヤーフレームで3Dグラフを描く(plot_wireframe)

ワイヤーフレームでグラフを描くには plot_wireframe メソッドを使います。

先ほどの「 ドットで3Dグラフを描く 」の scatter の行を次の様に書き換える事でワイヤーフレームでの描画が可能です。

曲面で3Dブラフを描く(plot_surface)

曲面でグラフを描く場合は、 plot_surface メソッドを使います。

「 ドットで3Dグラフを描く 」の scatter の行を次の様に書き換える事で、曲面を使った滑らかな描画が可能です。

底面に等高線を描く(contour)

グラフの底面に等高線を引くことも可能で、 contour メソッドを使います。

「 ドットで3Dグラフを描く 」の scatter の行を次の様に書き換える事で、底面に等高線を引くことが出来ます。

ドットと局面と等高線を組み合わせる

曲面の頂点にドットを描いて、且つ等高線を引いてみます。

グラフは順番に描画されますので、曲面を描いてから散布図を描くようにします。

もし逆にすると曲面で散布図がかき消されてしまいます。

「 ドットで3Dグラフを描く 」の scatter の行を次の様に書き換える事で、曲面とドットと等高線を同時に描くことが出来ます。

3D空間に線を描く(plot)

3Dグラフにもplot メソッドが用意されており、x,y,z の値を使って3次元空間に線を引くことが出来ます。

これ個までに紹介したグラフのデータをplot に渡しても線が引けないので、データ作成部分も変更しています。

下記を丸ごとコピーして実行すると、上記のグラフが表示できます。

まとめ

今回は matplotlib を使って3Dグラフを描画する方法を解説しました。

python のグラフ描画機能は非常に強力で、マウスでグリグリ回せる3Dグラフを簡単に作成することが出来ます。

ドットでの描画、曲面での描画、ワイヤーフレーム、折れ線、等高線を引くことが可能で、それらを同時に重ね合わせることも出来ます。

もし3Dグラフでグリグリしたくなったら、是非この記事を活用して下さい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次