Pregunta

Las tres variables que estoy usando para trazar son matriz de tamaño 1x1x100. Estoy usando esta línea de código para trazar:

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

Sin embargo, no estoy obteniendo el tercer eje y, por lo tanto, la tercera variable CO2_molefraction_top_of_window en la trama. ¿Puedo saber dónde me equivoco?

Además de la pregunta anterior, pero en el mismo tema, quiero saber si hay alguna opción en la que pueda trazar la trama 4 dimensional al igual que la trama tridimensional que se puede dibujar usando plot3?

¿Fue útil?

Solución

Solo una nota --- solo necesitas hacer el xlabel ylabel zlabel Comandos una vez (fuera del bucle).

También:

  • ¿Hay alguna razón por la que tus matrices estén 1x1x100 en lugar de solo 100x1 o 1x100? Porque si los remodelas a 2D puedes simplemente hacer la trazado de un solo golpe.
  • ¿Qué quieres decir con "Faltando el tercer eje"? Cuando ejecuto su código (o lo más cerca que pueda, ya que no proporcionó un ejemplo reproducible), yo hacer Obtenga un tercer eje:

.

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')

Esto da lo siguiente, en el que puedes ver claramente tres ejes:enter image description here

Si son las líneas de cuadrícula que desea que el gráfico se vea "más 3D", intente grid on (que se encuentra en los ejemplos en el archivo de ayuda de MATLAB para plot3, probar help plot3 desde el mensaje MATLAB):

grid on

enter image description here

Tendrá que aclarar un poco más el "tercer eje faltante".

Otros consejos

Entonces tuve el mismo problema al usar plot3. Por alguna razón, usando el hold on Comando "aplasta" la trama. No estoy seguro de por qué, pero sospecho que tiene algo que ver con la operación. hold on actúa en la trama. EDITAR: Para aclarar, la trama 3D todavía está allí, pero la perspectiva se ha visto obligada a cambiar. Si usa la herramienta "Rotar 3D" (la que tiene una flecha alrededor de un cubo), puede ver que el gráfico es 3D, la perspectiva predeterminada es simplemente recta, por lo que solo se ven dos ejes y parece plano.

Encontré un problema similar y como el @drofdarb es el hold on parece aplanar un eje. Aquí hay un fragmento de mi código, espero que esto ayude.

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

enter image description here


Opuesto a:

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

enter image description here

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top