そろそろ「複数枚の写真から立体を再現」を実験してみたいと考えています。そのために必要そうなコードを整理しておきます。立体の散布図です。与えられた3次元の点をプロットします。次に(x,y)から式を使ってzを計算し、空間内の点を求めてプロットしてみます。matplotlibというライブラリがあり、これを使えば簡単に描けます。
#==================== #最低限の3D散布図の描き方 # import sys import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() #add_subplotの最初の3つの引数は通常なら「1,1,1」でよい ax = fig.add_subplot(1,1,1, projection='3d') #(1,1,1),(2,8,5),……に点を打つ x = [1, 2, 3, 4, 5] y = [1, 8, 3, 6, 5] z = [1, 5, 3, 8, 9] ax.scatter(x, y, z) plt.show() sys.exit() #==================== #立体グラフ # import sys import matplotlib import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import math import numpy as np #----------------------- def f(x, y): return np.sin(math.pi*x*0.05) #----------------------- #xy平面にメッシュを作る。1.5は刻み。 x, y = np.mgrid[-20:20:1.5, -20:20:1.5] z = f(x, y) fig1 = plt.figure(figsize=(10, 10)) #add_subplotの最初の3つの引数は通常なら「1,1,1」でよい ax = fig1.add_subplot(1,1,1, projection="3d") ax.set_title("graph title") ax.scatter(x, y, z) plt.show() sys.exit() #====================
調べると日本語のフォントを使うのには少し作業が要るようです。軸にコメントをつけるときなど日本語がいいこともありますが、今回はとりあえず「最小限のコードで」ということでここまでとします。