matplotlib python用法 - 如何在Python中製作3D散點圖?




annotate pyplot (5)

我目前有一個nx3矩陣陣列。 我想將三列繪製為三軸。 我怎樣才能做到這一點?

我google了,人們建議使用Matlab ,但我真的很難理解它。 我還需要它是散點圖。

有人可以教我嗎?


Answers

您可以使用matplotlib 。 matplotlib有一個mplot3d模塊,可以完全按照你的意願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-D數組,但對於X_vals,Y_vals,Z_vals我從該數組複製/使用了1個列/軸,並分別分配給這些變量/數組。


其他人已經解釋了元類如何工作以及它們如何適合Python類型系統。 以下是它們可用於什麼的示例。 在我編寫的測試框架中,我想跟踪定義類的順序,以便稍後我可以按此順序實例化它們。 我發現使用元類這樣做最容易。

class MyMeta(type):

    counter = 0

    def __init__(cls, name, bases, dic):
        type.__init__(cls, name, bases, dic)
        cls._order = MyMeta.counter
        MyMeta.counter += 1

class MyType(object):              # Python 2
    __metaclass__ = MyMeta

class MyType(metaclass=MyMeta):    # Python 3
    pass

然後,任何屬於MyType子類的東西都會獲得一個類屬性_order ,它記錄了類的定義順序。







python 3d matplotlib plot scatter-plot