建议比较3个变量和绘图

时间:2012-04-19 08:00:38

标签: matlab plot

在下面的示例中,我将非常感谢您对绘制所需结果的最佳方法的一些反馈。

    clear all
Table1 = {0.990,0.987,0.972,0.832,0.776,20;0.988,0.986,0.961,0.946,0.906,...
    30;0.963,0.956,0.850,0.897,0.908,70;0.970,0.968,0.922,0.835,0.674,...
    90;0.957,0.950,0.908,0.925,0.955,100;0.966,0.963,0.948784273781552,0.892,...
    0.812,120;0.977,0.973,0.932,0.779,0.648,450;0.985,0.985,0.915,...
    0.832,0.792,480;0.979,0.969,0.939,0.814,0.642,550;0.983,0.980,0.916,...
    0.719,0.520,570;};
locations = {'loc1','loc2','loc3','loc4','loc5'};
CombLocation = locations(nchoosek(1:length(locations),2));
Table2 = [CombLocation,Table1];
Headings = {'location1','location2','depth1','depth2','depth3','depth4',...
    'depth5','residence time'};
Table3 = [Headings;Table2];
depths = [5.3,6.8,16.3,24,16.78];

在这里,我们有'表3'这表明根据“停留时间”对不同位置(< loc1'' loc2')之间的相关值(水温)进行排序。 (停留时间是这些地点之间停留时间的差异)。我想要做的是表明随着深度的增加,相关性水平受停留时间的影响很大。

这可以针对每个深度单独进行,例如

figure;
plot(cell2mat(Table3(2:11,8)),cell2mat(Table3(2:11,7)));

因此表明随着停留时间的增加,相关性降低。然后可以重复这种深度较浅的深度,例如深度(1),例如

figure;
plot(cell2mat(Table3(2:11,8)),cell2mat(Table3(2:11,3)));

然而,我想制作一个图表,表明随着水深的增加,具有更高水平相关性的位置是那些停留时间差异较小的位置。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

表面情节怎么样?

residences = cell2mat(Table3(2:end, end));
correlations = cell2mat(Table3(2:end, 3:end-1));
[X Y] = meshgrid(depths, residences);
surf(X, Y, correlations)
xlabel('Depth');
ylabel('Residence');
zlabel('Correlation');
shading interp;

这应该显示你想要的东西,虽然你的depths数组看起来很奇怪,因为它没有排序,这使得表面切割回来。您可以通过以下方式解决此问题:

[depths i] = sort(depths);
correlations = correlations(:, i);

但是这使得表面看起来很奇怪(因为16.78的深度似乎比24的深度具有更低的相关性。)

如果你只想展示深度增加会发生什么,那么用[X Y] = meshgrid(depths, residences);替换[X Y] = meshgrid(1:numel(depths), residences);可能是有意义的(否则我们会在深度= 6.8和深度= 16.3之间得到很大的差距)。

您还可以尝试删除shading interp并将surf(X, Y, correlations)替换为

scatter3(X(:), Y(:), correlations(:), '.');

获取散点图。