В настоящее время у меня есть матричный массив nx3. Я хочу построить три столбца как три оси. Как я могу это сделать?
Я погуглил, и люди предложили использовать Matlab , но мне действительно трудно понять это. Мне также нужно, чтобы это была диаграмма рассеяния.
Кто-нибудь может меня научить?
python
3d
matplotlib
plot
scatter-plot
user211037
источник
источник
n
массив по 3, вы получите график кривой в 3 измерениях. Для «трехмерного графика» вам понадобитсяn x m x l
массив. Вам нужна кривая, в которой любой кортеж(x,y,z)
представляет точку на кривой?Ответы:
Для этого вы можете использовать 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()
Приведенный выше код генерирует рисунок вроде:
источник
plt.zlabel('zlabel')
сработает. Для того, чтобы маркировать оси Z. Вы должны использовать:ax.set_zlabel('Z')
.Используйте следующий код, который у меня сработал:
# 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 - это мой трехмерный массив, а для X_val, Y_val, Z_val я скопировал / использовал 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
источник