2014-09-12 3 views
1

Мне нужно построить трехмерную фигуру с каждой точкой данных, окрашенной в значение 4-й переменной, с использованием цветовой карты. Допустим, что у меня есть 4 переменные X, Y, Z и W, где W = f (X, Y, Z). Я хочу трехмерный график с X, Y и Z как три оси. Заявление scatter3(X,Y,Z,'filled','b') дает мне график рассеяния в 3D, но я хочу включить значение Z в график, представив точки в качестве дополнительного параметра (либо с разными областями: большими кружками для точек данных с большим значением Z и малыми кругами для данные с низким значением Z или путем построения точек данных с разными цветами с использованием цветовой карты). Тем не менее, я новичок в MATLAB и не знаю, как действовать дальше. Любая помощь будет высоко оценена.3D-график рассеяния с данными 4D

Заранее благодарен!

+0

в вашем заявлении 'scatter3 (X, Y, Z, 'fill', 'b')', '' b'' представляют цвет синий. Поскольку вы указываете только один цвет, он применяется ко всем точкам. Если вы используете 'scatter3 (X, Y, Z, 'fill', W)', маркеры должны иметь другой цвет (относительно вашей 4-й оси W). Также обратите внимание, что вы можете заменить параметр ''fill'' вектором числового значения (той же длины, что и остальные), который будет контролировать размер каждого маркера. – Hoki

ответ

6

Так просто использовать z для вектора размера (четвёртое вход), а также цветового вектора (пятый вход):

z = 10*(1:pi/50:10*pi); 
y = z.*sin(z/10); 
x = z.*cos(z/10); 

figure(1) 
scatter3(x,y,z,z,z) 

view(45,10) 
colorbar 

Размер вектор должен быть больше 0, так что вам может потребоваться настроить ваш z соответственно.

enter image description here

+1

слишком плохо, 30sec и у меня нет изображения;) – Thomas

+0

Amazing ... спасибо за чрезвычайно простой ответ :) – BajajG

+0

+1 отличный ответ! –

1

Вы уже почти там ... просто использовать

scatter3(X,Y,Z,s,W); 

где s является размер точки (скаляр, например, 3) и W представляет собой вектор с значениями W. Вы также можете оформить

set(gcf, 'Renderer','OpenGL'); 

где ГРС получает текущую фигуру вы замышляет, чтобы значительно увеличить отклик при рассеянии много данных.

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