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