Domanda

Tutte e tre le variabili che sto usando per trama sono matrice di dimensioni 1x1x100. Sto usando questa riga di codice per tracciare:

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

Tuttavia, non sto ottenendo il terzo asse, e quindi la terza variabile CO2_molefraction_top_of_window sulla trama. Posso sapere dove sbaglio?

Oltre alla domanda di cui sopra, ma sullo stesso argomento, voglio sapere se c'è qualche opzione in cui posso tracciare la trama dimensionale proprio come il diagramma tridimensionale che può essere disegnato usando plot3?

È stato utile?

Soluzione

Solo una nota --- devi solo fare il xlabel ylabel zlabel comandi una volta (al di fuori del ciclo).

Anche:

  • c'è qualche motivo per cui le tue matrici sono 1x1x100 invece di giusto 100x1 o 1x100? Perché se li rimodellano a 2D puoi semplicemente fare la trama in un colpo.
  • Cosa intendi per "Missing Third Axis"? Quando eseguo il tuo codice (o il più vicino possibile, dal momento che non hai fornito un esempio riproducibile), io fare Ottieni un 3 ° asse:

.

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

Questo dà quanto segue, in cui puoi vedere chiaramente tre assi:enter image description here

Se sono le linee di griglia che vuoi rendere il grafico "più 3D", allora prova grid on (che è negli esempi nel file di aiuto MATLAB per plot3, Tentativo help plot3 Dal prompt matlab):

grid on

enter image description here

Dovrai chiarire un po 'di più "mancante terzo asse".

Altri suggerimenti

Quindi ho avuto lo stesso problema durante l'utilizzo plot3. Per qualche motivo, usando il hold on Comando "Aggrappa" la trama. Non sono sicuro del perché, ma sospetto che abbia qualcosa a che fare con l'operazione hold on si esibisce sulla trama. EDIT: per chiarire, la trama 3D è ancora lì, ma la prospettiva è stata costretta a cambiare. Se si utilizza lo strumento "Ruota 3D" (quello con una freccia attorno a un cubo), è possibile vedere che il grafico è 3D, la prospettiva predefinita è semplicemente dritta, quindi solo due assi sono visibili e appare piatto.

Mi sono imbattuto in un problema simile e come @drofdarb è il hold on Sembra appiattire un asse. Ecco uno snippet del mio codice, spero che questo aiuti.

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


Al contrario di:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top