Изменение цвета отдельной гистограммы без гистограммы - PullRequest
2 голосов
/ 29 марта 2019

Я хочу изменить цвет отдельной гистограммы в гистограмме в MATLAB. Я, конечно, могу сделать это с помощью цикла for, но возможно ли это сделать без использования цикла for, что-то вроде векторной операции.

Это минимальный пример использования для цикла

distr = [11,12,34,45,9];
totalkeys = numel(distr);
color = parula(totalkeys);
hold on;
for i = 1:totalkeys
bb= bar(i-1, distr(i), 'facecolor', color(i,:),'BarWidth', 1);
end
hold off;
xlim([0 totalkeys-1]);

Кстати, я использую MATLAB R2016a.

1 Ответ

3 голосов
/ 30 марта 2019

Начиная с R2017b и далее (спасибо @ SecretAgentMan за то, что отметили, что это зависит от версии), объект bar имеет свойство CDataуказать цвет каждой полосы.Однако вам также нужно изменить свойство FaceColor, чтобы эта работа работала:

Установите для свойства FaceColor объекта Bar значение 'flat', чтобы диаграмма использовала определенные цветав собственности CData.

distr = [11,12,34,45,9];
color = parula(numel(distr));
bar(distr,'BarWidth', 1 ,'FaceColor', 'flat', 'CData',color);

enter image description here

...