Question

Les trois variables que j'utilise pour tracer sont une matrice de taille 1x1x100.J'utilise cette ligne de code pour tracer:

hold on; 
for i=1:100
    plot3(R_L(:,:,i),N_Pc(:,:,i),CO2_molefraction_top_of_window(:,:,i),'o');
    xlabel('R_L');
    ylabel('N_P_c');
    zlabel('CO_2')
end

Cependant, je n'obtiens pas le troisième axe, et donc la troisième variable CO2_molefraction_top_of_window sur le tracé.Puis-je savoir où je me trompe?

En plus de la question ci-dessus, mais sur le même sujet, je veux savoir s'il y a une option où je peux tracer un tracé en 4 dimensions tout comme le tracé en 3 dimensions qui peut être dessiné en utilisant plot3?

Était-ce utile?

La solution

Juste une note --- il vous suffit d'exécuter les commandes xlabel ylabel zlabel une fois (en dehors de la boucle).

Aussi:

  • y a-t-il une raison pour laquelle vos matrices sont 1x1x100 au lieu de simplement 100x1 ou 1x100? Parce que si vous les remodelez en 2D, vous pouvez simplement faire le tracé en un seul coup.
  • Qu'entendez-vous par "troisième axe manquant"? Lorsque j'exécute votre code (ou aussi près que possible, puisque vous n'avez pas fourni d'exemple reproductible), j'obtiens un troisième axe:

.

X = rand(1,1,100); % 1x1x100 X matrix
Y = rand(1,1,100); % 1x1x100 Y matrix
Z = rand(1,1,100); % 1x1x100 Z matrix
% Now, we could do a for loop and plot X(:,:,i), Y(:,:,i), Z(:,:,i),
% OR we can just convert the matrix to a vector (since it's 1x1x100 anyway)
%    and do the plotting in one go using 'squeeze' (see 'help squeeze').
%    squeeze(X) converts it from 1x1x100 (3D matrix) to 100x1 (vector):
plot3(squeeze(X),squeeze(Y),squeeze(Z),'o')
xlabel('x')
ylabel('y')
zlabel('z')

Cela donne ce qui suit, dans lequel vous pouvez clairement voir trois axes: entrez la description de l'image ici

Si c'est le quadrillage que vous voulez rendre le graphique "plus 3D", alors essayez grid on (qui se trouve dans les exemples du fichier d'aide Matlab pour plot3, essayez help plot3 depuis l'invite Matlab):

grid on

entrez la description de l'image ici

Vous devrez clarifier un peu plus le "troisième axe manquant".

Autres conseils

J'ai donc eu le même problème lors de l'utilisation de plot3.Pour une raison quelconque, l'utilisation de la commande hold on "aplatit" le tracé.Je ne sais pas pourquoi, mais je soupçonne que cela a quelque chose à voir avec l'opération que hold on effectue sur l'intrigue. Edit: Pour clarifier, le tracé 3D est toujours là, mais la perspective a été forcée de changer.Si vous utilisez l'outil "Rotation 3D" (celui avec une flèche autour d'un cube), vous pouvez voir que le graphique est en 3D, la perspective par défaut est juste droite, donc seuls deux axes sont visibles et il apparaît à plat.

Je suis tombé sur un problème similaire et comme @ Drofdarb, le hold on semble aplatir un axe.Voici un extrait de mon code, j'espère que cela vous aidera.

for iter = 1:num_iters:
    % hold on;
    grid on;
    plot3(tita0,tita1, num_iters,'o')
    title('Tita0, Tita1')
    xlabel('Tita0')
    ylabel('Tita1')
    zlabel('Iterations')
    hold on;            % <---- Place here
    drawnow   
end

 entrez la description de l'image ici


Contrairement à:

for iter = 1:num_iters:
    grid on;
    hold on;          % <---- Not here
    plot3(tita0,tita1, num_iters,'o')
    title('Tita0, Tita1')
    xlabel('Tita0')
    ylabel('Tita1')
    zlabel('Iterations')
    % hold on;
    drawnow   
end

 entrez la description de l'image ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top