用丝带的瀑布情节

时间:2012-02-22 11:22:15

标签: matlab ribbon waterfall

我有一系列光谱数据,我想在瀑布风格的情节中绘制。 瀑布本身没有那么有用,因为细线在每个光谱上都有太多差异,那是不是很有用

因此,我想尝试使用功能,这在docs 中看起来很有希望。

但结果完全不同而且无用!

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

enter image description here

编辑:

我现在创建了一个手动瀑布图,它接近我想要的:

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 个答案:

答案 0 :(得分:2)

您仍然可以使用waterfall,但设置了一些patchaxes属性以获得更好的输出。需要注意的重要一点是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产生一个消除锯齿的数字;获取脚本here

enter image description here