How can I plot this figure?
    조회 수: 8 (최근 30일)
  
       이전 댓글 표시
    
X=[1,2,3,4,5,6,7,8,9,10]
Y=['d=1','d=3','d=2','d=2','d=3','d=1','d=2','d=2','d=1','d=3']
The outcome will be similar to this figure.

댓글 수: 4
  Image Analyst
      
      
 2022년 4월 11일
				
      편집: Image Analyst
      
      
 2022년 4월 11일
  
			How are you determining the width of the gray and black strips?  Then are you just using repmat() to replicate some row vector vertically to get your vertically striped image?
X=[1,2,3,4,5,6,7,8,9,10];  %days
Y1=[1,0,0,0,1,0,0,0,1,0]; %d=1 (worker 1)
Y2=[0,0,1,1,0,0,1,1,0,0]; %d=2  (worker 2)
Y3=[0,1,0,0,0,1,0,0,0,1]; %d=3   (worker 3)
y2image = uint8(repmat(128*Y2, [15, 1]));
imshow(y2image)
채택된 답변
  Voss
      
      
 2022년 4월 16일
        You could use create patch objects instead of rectangle objects, and then make a legend from (some of) those patches.
Or you can create patch objects with NaN data (so they don't appear in the axes) in addition to the rectangle objects you already have, one patch for each color, just to be used for the legend:
Face(1).Colours=[0 0 0]; Face(2).Colours=[0.8500 0.3250 0.0980]; Face(3).Colours=[0.9290 0.6940 0.1250];
Y1=[1,0,0,0,1,0,0,0,1,0]; %d=1 (worker 1)
Y2=[0,0,1,1,0,0,1,1,0,0]; %d=2  (worker 2)
Y3=[0,1,0,0,0,1,0,0,0,1]; %d=3   (worker 3)
Days=10;
i=1;
while i<=Days 
    if Y1(i)==1
        rectangle('Position',[(i-0.5) 0 1 1],'FaceColor',Face(1).Colours,'EdgeColor',Face(1).Colours,'LineWidth',0.5)
%         axis([0 Days 0 1]);
    elseif Y2(i)==1
        rectangle('Position',[(i-0.5) 0 1 1],'FaceColor',Face(2).Colours,'EdgeColor',Face(2).Colours,'LineWidth',0.5)
%         axis([0 Days 0 1]);
    elseif Y3(i)==1
        rectangle('Position',[(i-0.5) 0 1 1],'FaceColor',Face(3).Colours,'EdgeColor',Face(3).Colours,'LineWidth',0.5)
%         axis([0 Days 0 1]);
    end
    i=i+1;
end
% (just set the axes limits once, and include the +/- 0.5)
axis([0.5 Days+0.5 0 1]);
% create three patches with NaN data, to be used for making the legend:
p = [patch(NaN,NaN,Face(1).Colours); patch(NaN,NaN,Face(2).Colours); patch(NaN,NaN,Face(3).Colours)];
% make a legend for those three patches
legend(p,{'Y1' 'Y2' 'Y3'}) % (call them what you like)
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Discrete Data Plots에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






