현재 nx3 행렬 배열이 있습니다. 세 개의 열을 세 개의 축으로 플로팅하고 싶습니다. 어떻게 할 수 있습니까?
나는 봤는데 사람들이 Matlab 사용을 제안 했지만 이해하는 데 정말 어려움을 겪고 있습니다. 산점도도 필요합니다.
누군가 나를 가르쳐 줄 수 있습니까?
답변
당신이 사용할 수있는 matplotlib 를 . matplotlib에는 원하는 것을 정확히 수행 하는 mplot3d 모듈이 있습니다.
from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
import random
fig = pyplot.figure()
ax = Axes3D(fig)
sequence_containing_x_vals = list(range(0, 100))
sequence_containing_y_vals = list(range(0, 100))
sequence_containing_z_vals = list(range(0, 100))
random.shuffle(sequence_containing_x_vals)
random.shuffle(sequence_containing_y_vals)
random.shuffle(sequence_containing_z_vals)
ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals)
pyplot.show()
위의 코드는 다음과 같은 그림을 생성합니다.
답변
나를 위해 일한 다음 코드를 사용하십시오.
# Create the figure
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Generate the values
x_vals = X_iso[:, 0:1]
y_vals = X_iso[:, 1:2]
z_vals = X_iso[:, 2:3]
# Plot the values
ax.scatter(x_vals, y_vals, z_vals, c = 'b', marker='o')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
X_iso는 내 3 차원 배열이고 X_vals, Y_vals, Z_vals의 경우 해당 배열에서 1 개의 열 / 축을 복사 / 사용하고 해당 변수 / 배열에 각각 할당했습니다.
답변
대신 점근선을 사용하십시오!
다음과 같이 보일 수 있습니다.
http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.pdf
이것은 코드입니다 :
http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.asy
점근선은 데이터 파일에서도 읽을 수 있습니다.
전체 갤러리 :
http://asymptote.sourceforge.net/gallery/
Python 내에서 점근선을 사용하려면 :
http://www.tex.ac.uk/tex-archive/graphics/asymptote/base/asymptote.py