15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

matplotlibの3Dグラフで平坦な面を作図する

Last updated at Posted at 2017-06-08

matplotのチュートリアルなどを読むと鞍型や三角関数の合成など、素敵な3D作図の例を沢山見つけることができます。
しかしデータ分析業務においてはもっと単純な、単にy=ax+bをZ方向に引き伸ばして表示したいというようなことの方が多いのではないでしょうか。
簡単にできると思いきや、絵的に地味すぎるせいか例が見つからず時間がかかってしまったのでメモしておきました。

python
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
z = np.linspace(0, 100, 11)
Y, Z = np.meshgrid(y, z)
X = np.array([x] * Y.shape[0])

fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.plot_surface(X, Y, Z, alpha=0.3) 

2.png

python
x = 2
y = np.linspace(0, 100, 11)
z = np.linspace(0, 100, 11)
Y, Z = np.meshgrid(y, z)
X = np.array([x] * Y.shape[0])

fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.plot_surface(X, Y, Z, alpha=0.3)

5.png

あとはこの上から3D散布図を重ねたりワイヤーフレームの線を引いてやればOK。
とはいえ、見せられる側からするとディスプレイ上の3Dグラフはどうやっても見にくいのでデータ可視化が目的であればZの代わりにカラーグラデーションを使ったり、三面図みたいな見せ方を考えたほうがいいかもしれません。三次元のモデリングを行う方は是非参考にしてください。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?