3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

3次元空間で不等式条件を満たす格子座標の描画

Posted at

3次元空間で不等式条件を満たす領域を,格子点を使って描画したい.MATLAB Answers の回答を参考にして作ったソースコードと出力したグラフをここに示す.

#ソースコード

test.py
#!/usr/bin/env python3

-- coding: utf-8 --

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

#各軸の格子座標の作成
x = np.arange(-5,5,0.2)
y = np.arange(-5,5,0.2)
z = np.arange(0,5,0.2)

#格子座標(点)の作成
xx, yy, zz = np.meshgrid(x,y,z)

#不等式条件の指定し、各格子座標が条件を満たすかを確認する.
c1 = np.sqrt(pow(xx-1,2)+pow(yy-2,2))<1
c2 = zz<xx+yy
c3 = 1<zz

#全ての不等式条件を満たす格子座標のインデックスを取得
idx=c1&c2&c3

#3次元のグラフの作成
fig = plt.figure()
ax = Axes3D(fig)

#不等式条件を満たす格子点のみを描画
ax.scatter(xx[idx],yy[idx],zz[idx],'o',edgecolors='k',depthshade=True)
ax.set_aspect('equal') #X-Y平面のみ軸のアスペクト比を等倍にする。

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.tick_params(labelsize=6)

ax.view_init(15,-102)
plt.show()

#出力結果
![Figure_1.jpeg](https://qiita-image-store.s3.amazonaws.com/0/241729/1a7ea95e-c469-08f4-9f91-d0b22d134345.jpeg)

各格子点のマーカーの色を奥行に応じて濃淡を変えるために,scatter関数の引数で「depthshade=True」と明示しているが,実際はデフォルトで指定されている.マーカーの色には濃淡がついているものの,境界を描画していないので少々分かりにくい.
3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?