Python에서 3D 산점도를 만드는 방법은 무엇입니까?


94

현재 nx3 행렬 배열이 있습니다. 세 개의 열을 세 개의 축으로 플로팅하고 싶습니다. 어떻게 할 수 있습니까?

나는 봤는데 사람들이 Matlab 사용을 제안 했지만 이해하는 데 정말 어려움을 겪고 있습니다. 산점도도 필요합니다.

누군가 나를 가르쳐 줄 수 있습니까?


1
플롯을 수행 할 응용 프로그램을 찾고 있습니까? 아니면 플롯을 그리는 코드를 (어떠한 언어로든) 작성 하시겠습니까?
Nils Pipenbrinck

점근선 사용-무료이며 강력하며 품질이 굉장합니다!
Hamish Grubijan

1
배열이 있으면 프로그램이 있고이 배열이 그 일부라고 가정합니다. 어떤 프로그램 (언어)인지 알려 주시고 도와주세요!
Carl Smotricz

여전히 점근선 (lib)을 사용하거나 입력 파일을 생성합니다. 놀라운 출력 품질을 확인하십시오!
Hamish Grubijan

2
그것이 만약 n3 배열로, 당신은 3 차원 곡선의 플롯을 얻을 것이다. "3 차원 플롯"의 경우 n x m x l배열 이 필요합니다 . 곡선의 (x,y,z)한 점을 나타내는 하나의 튜플이 있는 곡선을 원하십니까?
Alok Singhal

답변:


164

당신이 사용할 수있는 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()

위의 코드는 다음과 같은 그림을 생성합니다.

matplotlib 3D 이미지


11
좋은 솔루션입니다. 그 주 plt.zlabel('zlabel')실 거예요 작업. z 축에 레이블을 지정하려면 다음을 사용해야 ax.set_zlabel('Z')합니다..
Yonatan Simson 2016 년

8

나를 위해 일한 다음 코드를 사용하십시오.

# 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 개의 열 / 축을 복사 / 사용하고 해당 변수 / 배열에 각각 할당했습니다.


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


2
이 답변의 대부분의 링크가 지금까지 죽었
을까 봐 걱정됩니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.