участок водопада с использованием ленты - PullRequest
2 голосов
/ 22 февраля 2012

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

Поэтому я хочу попробовать функцию ленты, которая выглядит многообещающе в документах . .

Но результат совершенно другой и бесполезный!

figure(2); clf;
ribbon(spectralSeries); 
shading flat % otherwise complete dark
axis tight

enter image description here

EDIT:

Я создал ручной участок водопада, который близок к тому, что я хотел:

hold on;
stepsize = 0.35;
for k = length(series):-1:1
    color = cmap(k,:);
    data = spectralSeries(k,:) + (k-1)*stepsize;

    hplot(k) = filledcurve(xaxis, data, 0);       
    set(hplot(k), 'FaceColor' , color*1.2)
    set(hplot(k), 'EdgeColor' , color*0.5)    
end
hold off;
axis tight

enter image description here

Тем не менее, я все еще заинтересован в решении исходной проблемы.

РЕДАКТИРОВАТЬ 2:

Вот пример использования тех же данных с водопадом, лентой и моим пользовательским кодом. Только мой код полезен для визуализации данных. Я все еще хотел бы знать, как заставить ленту и водопад выглядеть приличным сюжетом ...

Этот код теперь используется для создания некоторых данных

xaxis = linspace(-pi/2,3/2*pi, 1000);
variation = [ 0.5 1 5 10];
spectralSeries = abs(sin(xaxis)'*ones(1,4) + sin(xaxis'*variation)*0.25);

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

ribbon(spectralSeries); 
shading flat % otherwise complete dark
axis tight

enter image description here

А вот и с водопадом

hplot = waterfall(spectralSeries);
set( hplot, 'LineWidth', 4 );
hidden off;

enter image description here

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

enter image description here

1 Ответ

2 голосов
/ 14 марта 2012

Вы все еще можете использовать waterfall, но установить некоторые свойства patch и axes, чтобы получить более качественный вывод. Важно отметить, что spectralSeries следует транспонировать.

figure
xaxis = linspace(-pi/2,3/2*pi, 200);
variation = [ 0.5 1 5 10 7 3.5 8];
spectralSeries = abs(sin(xaxis)'*ones(1,7) + sin(xaxis'*variation)*0.25);
h = waterfall(spectralSeries');
cameratoolbar;

%%
set(h, 'FaceColor', 'flat');
set(h, 'FaceAlpha', 0.7);
set(h, 'EdgeColor', 'k');
set(h, 'FaceVertexCData', rand(7,3))
set(gca, 'Color', [1 1 1]*0.85)
set(gca, 'GridLineStyle', 'none');

%%
myaa

(необязательный) последний оператор, myaa, создает сглаженное число; получите скрипт здесь .

enter image description here

...