MATLAB: Plot3 no muestra el tercer eje
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
?
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 solo100x1
o1x100
? 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:
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
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
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