如何更改bar3(MATLAB)中的颜色表示来表示来自另一个变量的数据?

时间:2015-06-22 09:28:06

标签: matlab

我有32x32矩阵LagsX,其中包含我想要使用bar3在3d中绘制的数据。我希望能够更改条形的颜色,以表示另一个名为32x32的{​​{1}}矩阵中的数据。所以我实际上代表了4d数据。

我尝试访问了该栏的CrossCorrX,我使用ZData绘图并从bar3(LagsX)替换ZData。 但我收到了以下错误:

  

无效或删除对象。

这是我尝试使用的代码:

bar3(CrossCorX)

我收到了b1 = bar3(crossCorrX); colorbar b = bar3(lagsX); for k = 1:length(b) b(k).CData = b1(k).ZData; b(k).FaceColor = 'interp'; end 行中的错误。

你有建议怎么做吗?为什么会出现错误? 使用除b(k).CData = b1(k).ZData;之外的其他功能的建议也将受到赞赏。

我正在使用MATLAB R2015a。

修改

我已经理解了我的问题,只需添加数字;再次。我的新问题是,无论LagsX == 0,表示CrossCorX的颜色都显示为零,即使它不同。有关如何克服这个问题的任何提示?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为错误正在发生,因为您使用第2个覆盖第1个绘图,因此无法再访问其ZData属性。

为了解决这个问题,你可以简单地为每个bar3情节分配一个图形,这应该有效。

随机数据示例:

clear
clc
close all

A = rand(10,10);
A2 = rand(10,10);

figure(1)
b1= bar3(A);

figure(2)
b = bar3(A2);

hcb = colorbar;

for k = 1:length(b)
    b(k).CData = b1(k).ZData;
    b(k).FaceColor = 'interp';
end

输出:

enter image description here