pySpherepts > Jupyter > 결과의 좌표를 구면상에 표시하는 구현 v0.2 > 안쪽의 점 배제 > 같은 것이 얻어졌다

운영 환경
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)

처리



pySpherepts > Jupyter > 결과의 좌표를 구면에 표시하는 구현 v0.1 > 여분의 점이 보인다 (안쪽의 점과 같다)
위의 문제점은 "안쪽의 점이 은면 처리되지 않고 보이고 있다"는 것이다.

플롯할 데이터에서 제외하도록 했다.

배제를 용이하게 하기 위해서 하나의 좌표의 quadrant(상한)를 배제하기로 했다.
또한 뷰 설정을 변경하여 나머지 점이 정면으로 보이도록합니다.

코드 v0.2



plotSphNodes_171126.ipynb
import matplotlib.pyplot as plt
from matplotlib import cm, colors
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from pylab import rcParams
from matplotlib.colors import LightSource

# https://stackoverflow.com/questions/31768031/plotting-points-on-the-surface-of-a-sphere-in-pythons-matplotlib

rcParams['figure.figsize'] = 10,10
rcParams['figure.dpi'] = 130

# Create a sphere
r = 1
pi = np.pi
cos = np.cos
sin = np.sin
phi, theta = np.mgrid[0.0:pi:100j, 0.0:2.0*pi:100j]
x = r*sin(phi)*cos(theta)
y = r*sin(phi)*sin(theta)
z = r*cos(phi)

#Import data
data = np.genfromtxt('res_IcodsNodes_4_0_171126.txt')
data = data * 1.0005
xx, yy, zz = np.hsplit(data, 3) 

xs, ys, zs = [], [], []
for ax, ay, az in zip(xx, yy, zz):
    if (ay > 0):
        xs += [ax]
        ys += [ay]
        zs += [az]
xx, yy, zz = xs, ys, zs

#Set colours and render
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(
    x, y, z,  rstride=1, cstride=1, color='y', alpha=1.0, linewidth=0, shade=False)

ax.scatter(xx,yy,zz,color="k",s=15)

ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ax.set_zlim([-1,1])
ax.set_aspect("equal")
plt.tight_layout()
ax.view_init(0, 90)
plt.show()



MATLAB 결과



MATLAB에서 spherepts를 실행한 결과는 다음과 같습니다.



상기는 다음과 같이 얻어졌다 (spherepts 사용).
>> [x0,tri0] = getIcosNodes_log(4,0);
>> plotSphNodes(x0)
>> view(0,0)

API 비교



Matplotlib의 view_init()
htps // tp t b. 오 rg/mpl_ 와 l ts/mp pt3d/아피. HTML

view_init(elev=None, azim=None)

MATLAB view()
htps : // jp. 마 t 후 rks. 이 m/헤lp/마tぁb/레 f/ぃぃ에w. HTML

view(az,el)

view(90,0)로 하면 배치가 다르다.
좌표계(xyz와 xzy등)가 2개의 플랫폼에서 다른 것일지도.
azimuth의 정의가 다르다.

좋은 웹페이지 즐겨찾기