Pythonで美しいグラフを書く! その4:Matplotlibで3次元グラフ 実践編

Pythonで美しいグラフを書く! その4:Matplotlibで3次元グラフ 実践編

いつも、Excelでグラフを作っている方。
綺麗なグラフまたは、決まったグラフを作るために何度もマウスをポチポチしていて面倒だと感じていませんか?
もし、決まったグラフを毎回、Excelでポチポチ作るのが面倒なら、

その作業をPythonにやらせて、作業効率をアップさせてみませんか?
今回はMatplotlibで3次元のグラフのうちよく用いる次の2つのグラフの書き方を実践的に説明していきます。

・3次元散布図
・3次元等高線

の二つの基本的な書き方を説明します。

3次元散布図

2つのデータの相関関係は普通の散布図で表すことができますが、3つ以上のデータは3次元でグラフ化することができます。

それでは、3次元の散布図の書き方を説明していきます。

これだけで書くことができます。
生成した乱数でプロットを行いました。
内容を詳しく説明していきます。

・モジュールのインポート

この3つが必要なのでインポートします。

三行目のfrom mpl_toolkits.mplot3d import Axes3Dはmatplotlib内にあります。

・グラフエリアの用意

二行目が重要です。111はx:y:z=1:1:1を意味しており、このサイズのグラフが用意されます。

・データの用意

100個の配列を3つ乱数から生成します。

・プロットと出力

ax.scatter(x,y,z)でプロットできます。
3次元散布図は同じサイズの配列データが3つあれば描くことができます。
次に、3次元等高線の書き方を見ていきます!

3次元等高線

3次元等高線は2つの変数によって、一つの変数を説明する時に用います。
では書いてみましょう!

一番単純には、これで描くことができます。
では詳しく説明していきます。

・モジュールのインポートとグラフの用意

ここは先ほどと同じです。
今回はcosxとsinyのグラフを描いていきます。

・データの用意

ここで、2つの変数xとyを作成しました。

・メッシュグリッドの作成

xとyの配列からを繋げることで、メッシュグリッドを構築します。
メッシュグリッドは3次元等高線を作成する時に必要です。

・Z値の構築

x、yではなく先ほど作成したメッシュグリッドから作成していることが重要です。

・表面のプロットと等高線のプロット

plot_surface(X, Y, Z)で3次元の表面を、contour(X, Y, Z)で等高線を描きます。

3次元等高線ではxとyをメッシュグリッド化する必要があります。
そのため、xとyは連続の変数でなければいけません。

まとめ

・3次元散布図は同じサイズの配列データが3つあれば描くことができます。

・3次元等高線ではxとyは連続の変数で、xとyをmeshgrid()で繋げる必要があります。

Pythonカテゴリの最新記事