是否可以创建颜色密度条形图。我想要一个图表,它实际上是一维图(但是一个二维条),其中颜色(或阴影)根据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]的元素。
我希望这有一定道理。这是一个棘手的解释!非常感谢。
答案 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
结果:
然后,如果你想改变X和Y tic kLabels,请查看这个有趣的答案:
答案 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'
希望这对某些用户有用或至少有趣。