Atualmente, tenho uma matriz de matriz nx3. Eu quero plotar as três colunas como três eixos. Como eu posso fazer isso?
Pesquisei no Google e algumas pessoas sugeriram o uso do Matlab , mas estou realmente tendo dificuldade em entender. Eu também preciso que seja um gráfico de dispersão.
Alguém pode me ensinar?
python
3d
matplotlib
plot
scatter-plot
user211037
fonte
fonte
n
matriz de 3, você obterá um gráfico de uma curva em 3 dimensões. Para um "gráfico 3-d", você precisaria de uman x m x l
matriz. Você quer uma curva, com qualquer tupla(x,y,z)
representando um ponto na curva?Respostas:
Você pode usar matplotlib para isso. matplotlib tem um módulo mplot3d que fará exatamente o que você quiser.
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()
O código acima gera uma figura como:
fonte
plt.zlabel('zlabel')
não vai funcionar. Para rotular o eixo z você precisa usar:ax.set_zlabel('Z')
.Use o seguinte código que funcionou para mim:
# 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()
enquanto X_iso é meu array 3-D e para X_vals, Y_vals, Z_vals eu copiei / usei 1 coluna / eixo desse array e atribuído a essas variáveis / arrays respectivamente.
fonte
Em vez disso, use a assíntota!
Pode ser assim:
https://asymptote.sourceforge.io/gallery/3Dgraphs/helix.html
Este é o código: https://asymptote.sourceforge.io/gallery/3Dgraphs/helix.asy
A assíntota também pode ler arquivos de dados.
E a galeria completa: https://asymptote.sourceforge.io/gallery/index.html
Para usar a assíntota de dentro do Python:
https://ctan.org/tex-archive/graphics/asymptote/base/asymptote.py
fonte