0

在下面的例子中,我希望能得到一些关于绘制所需结果的最佳方法的反馈。

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

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

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

但是,我想制作一张图,表明随着水深的增加,具有较高相干性的位置是停留时间差异较小的位置。

任何意见,将不胜感激。

4

1 回答 1

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);为可能有意义(否则我们会在深度 = 6.8 和深度 = 16.3 之间得到很大的差距)。[X Y] = meshgrid(1:numel(depths), residences);

您还可以尝试删除shading interp和替换surf(X, Y, correlations)类似的东西

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

改为获得散点图。

于 2012-04-19T08:29:19.733 回答