颜色/阴影密度条形图

时间:2014-10-21 14:53:22

标签: matlab graph matlab-figure

是否可以创建颜色密度条形图。我想要一个图表,它实际上是一维图(但是一个二维条),其中颜色(或阴影)根据y在0和1之间的值而变化.x轴只是时间。当我们沿着x轴移动时,y值改变使得0 <0。 y&lt; 1并更改条形图的颜色,例如从y = 0处的白色到y = 1处的黑色以及介于两者之间的灰色阴影?

我的数据样本以以下格式导入:

[dates,extdamp,htgvlv,occupied,redamp,supdamp,clgvlv] = importfile1('MassImportAHU7.csv')

每个变量是318x1双精度,每个值都是[0,1]的元素。

我希望这有一定道理。这是一个棘手的解释!非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您有多个1D变量,可以说,保存在变量A;

您想要创建包含所有数据的图像(或网格)。

所以我会这样做

img=A(:,1);
for ii=2:size(A,2)
   img=horzcat(img,A(:,2))
end
imshow(img)
colormap gray
colorbar

修改 由于您没有图像处理工具箱,您可以通过其他方式执行此操作

A=rand(100,50) % sample data I created

Z=A;
[x,y]=meshgrid(1:size(Z,2),1:size(Z,1));
surf(x,y,Z)
view(2)
axis tight
colormap gray
colorbar

结果:

enter image description here

然后,如果你想改变X和Y tic kLabels,请查看这个有趣的答案:

http://www.mathworks.com/matlabcentral/answers/92565-how-do-i-control-axis-tick-labels-limits-and-axes-tick-locations

答案 1 :(得分:0)

我找到了另一种方法,我可以在上面绘制类似的样式图。它有其优点(从我的初学者的角度来看),因为在不知道许多其他功能和代码的情况下,它更容易操作并使其成为我自己的事物。它还允许我将图形的阴影和颜色更改为多个变量上的非预定义设置。在计算上,我想象它会变慢,但玩起来肯定很有趣。代码低于[0,1]禁止date5:

之间缩放的一些预定义变量
A = [clgvlv,redamp,extfanstat,htgvlv,occupied,supfanspd]; %between 0 and 1
a = {'clgvlv','redamp','extfanstat','htgvlv','occupied','supfanspd'};
A(isnan(A)) = 0; %removing NaN's
date5 = %your dates/x variables

h=10 %optional scaling factor
K1 = date5(1)
K2 = date5(end);
K3 = 1/24/4 %tick-increments
J = size(A,2); % =2

%colour indicator
for j=1:J
    if mod(j,3) == 1
        Acol(j,:) = [0,1,1];
    elseif mod(j,3) == 2
        Acol(j,:) = [1,1,0];
    else mod(j,3) == 0
        Acol(j,:) = [1,0,1];
    end
end

%drawing Rectanges/blocks
for j=1:J
    for k=1:size(date5,1)
       rectangle('Position', [K1+ K3*(k-1), h*(j-1), 1, h], 'FaceColor', [1-Acol(j,1)*A(k,j) 1-Acol(j,2)*A(k,j) 1-Acol(j,3)*A(k,j)], 'LineStyle', 'none' )
    end
end

for j=1:J
    text(date5(end)+(date5(end)-date5(1))*0.02,(j-0.5)*h, a(j))
end

set(gca,'XTick',[date5(1):(1/6):date5(end)], 'XLim',[735881.5 date5(end)]) %delete if not dates
datetick('x','ddd HH:MM' ,'keeplimits','keepticks');
xlabel 'Time/Date'
ylabel 'Variables'

希望这对某些用户有用或至少有趣。