web-dev-qa-db-ja.com

Pythonで3D散布図を作成する方法は?

現在、nx3マトリックス配列を使用しています。 3つの列を3つの軸としてプロットします。どうやってやるの?

私はグーグルで調べましたが、人々はMatlabを使用することを提案しましたが、それを理解するのに本当に苦労しています。また、散布図である必要があります。

誰か教えてもらえますか?

64
user211037

これには 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 image

123
Chinmay Kanchi

私のために働いた次のコードを使用してください:

# 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は私の3D配列であり、X_vals、Y_vals、Z_valsの場合は、その配列から1列/軸をコピー/使用し、それらの変数/配列にそれぞれ割り当てました。

2
Saeed Ullah

代わりに漸近線を使用してください!

これは次のようなものです。

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

1
Hamish Grubijan