pySpherepts > Jupyter > 결과의 좌표를 구면상에 표시하는 구현 v0.2 > 안쪽의 점 배제 > 같은 것이 얻어졌다
11320 단어 JupytermatplotlibmatlabpySpherepts
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의 정의가 다르다.
Reference
이 문제에 관하여(pySpherepts > Jupyter > 결과의 좌표를 구면상에 표시하는 구현 v0.2 > 안쪽의 점 배제 > 같은 것이 얻어졌다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/af4827dc6c56366f6112텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)