Matlab: цвет отдельных групп, а не отдельных полос в группе - PullRequest
0 голосов
/ 09 ноября 2018

Это мой код:

Positions=[1:5];
Gap_Duration=[4,4,4,4,4,4;
2,2,2,2,2,2;
3,3,3,3,3,3;
4,4,4,4,4,4; 
0,0,0,0,0,24];
H = barh(Positions,Gap_Duration,'stacked')
set(H([1 3 5]),'Visible','off')
ax = gca;
ax.YTick = [Positions];
ax.YTickLabel = {'AllOut','Port1In','Port2In','DeliverReward','Total Time Duration'};
xlabel('Time')
title('Lever Press Frequency')

Я хочу, чтобы столбцы на горизонтальных осях Y были по одному цвету (поэтому все столбцы «Доставить вознаграждение» красного цвета, все столбцы «Port2In» синего цвета и т. Д.). Любые подсказки, как это сделать?

1 Ответ

0 голосов
/ 09 ноября 2018

Чтобы обойти проблему, создайте отдельные горизонтальные гистограммы для каждой строки, сохраняя при этом ширину остальных элементов равной NaN, чтобы ничего лишнего не отображалось.т.е.

Lp = length(Positions);  
colors = hsv(Lp);    %Generating group colors (or define custom colors if needed)
hold on;
for k=1:Lp 
    GapD = NaN(size(Gap_Duration));   %Initializing a dummy Gap_Duration matrix
    GapD(k,:) = Gap_Duration(k,:);    %Filling with the content of the current row
    H = barh(Positions, GapD, 'stacked');
    set(H, 'FaceColor', colors(k,:)); %Making the color same for all current bars
    set(H([1 3 5]),'Visible','off');  %This condition is from your code     
end

output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...