2012-02-20 3 views
0

Все три переменные, которые я использую для построения, являются матрицей размера 1x1x100. Я использую эту строку кода для построения:Matlab: Plot3 не показывает 3-ю ось

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 

Однако, я не получаю третью ось, и, следовательно, третья переменная CO2_molefraction_top_of_window на участке. Могу я знать, где я ошибаюсь?

Помимо вышеупомянутого вопроса, но по тому же вопросу, я хочу знать, есть ли какой-либо вариант, где я могу построить 4-мерный сюжет, как 3-мерный сюжет, который можно нарисовать с помощью plot3?

+1

Что такое 4D-график, если смотреть на 2D-экране ...? –

ответ

1

Только примечание --- вам нужно только сделать xlabelylabelzlabel команды один раз (вне цикла).

также:

  • есть какой-либо причине ваши матрицы 1x1x100 вместо того, чтобы просто 100x1 или 1x100? Потому что, если вы измените их на 2D, вы можете просто сделать заговор одним ударом.
  • Что вы подразумеваете под «отсутствующей третьей осью»? Когда я запускаю свой код (или так близко, как я могу получить, так как вы не предоставили воспроизводимый пример), я сделать получить 3-ю ось:

.

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

Это дает следующее, в котором вы можете четко видеть три оси: enter image description here

Если это линий сетки, которые вы хотите, чтобы сделать график выглядеть «больше 3D», а затем попробовать grid on (который в примерах в файле справки Matlab для plot3, попробуйте help plot3 из командной строки Matlab):

grid on 

enter image description here

Вам нужно будет уточнить «недостающую третью ось» немного больше.

+0

Спасибо! Как-то, когда я рисовал с размером матрицы '1x1x100', я не получал 3-ей оси. Но 'squeeze' - хорошая функция, и появляется 3-я ось. Еще раз спасибо. – Pupil

+0

О, и эти метки внутри цикла были моей ошибкой. Не смотрел на них, находясь внутри петли. – Pupil

1

У меня была такая же проблема при использовании plot3. По какой-то причине использование команды hold on «сглаживает» сюжет. Я не уверен, почему, но я подозреваю, что это имеет какое-то отношение к операции hold on. Редактировать: Чтобы уточнить, 3D-график все еще существует, но перспектива была вынуждена измениться. Если вы используете инструмент «rotate 3D» (тот, у которого есть стрелка вокруг куба), вы можете видеть, что график равен 3d, перспектива по умолчанию просто прямо, поэтому видны только две оси, и она кажется плоской.

Смежные вопросы