我知道@finn已经回答了这个问题,但是当我测试他的解决方案时,我无法让它工作。奇怪的是,我意识到即使是最初的脚本也在给我的系统带来错误。可能我有一个非常古老的matlab版本。但是,再次,我想知道是否还有其他人也有这个问题。
由于某种原因,我无法设置
CData
成员为
bar
.
不管怎样,在测试之后,我得到了这个为我工作。
clc
clear all
close all
values = [4 1 11 2 3; 4 1 5 2 -10];
names = {'Pre split total EON' 'Post split total EON'...
'Pre split pure EON' 'Post split pure EON' 'Post split Uniper';...
'Pre split total RWE' 'Post split total RWE'...
'Pre split pure RWE' 'Post split pure RWE' 'PostSplitInnogy'};
categories = {'EON','RWE'};
figure;
b = bar(values,'FaceColor','flat');
% only significant changes here
% ***********************************
col = ["r", "b", "y", "g", "cyan"];
for k = 1:size(values,2) % for fancier colors.
set(b(k), "FaceColor", col(k));
end
% ***********************************
ticksList = b(1).XData + arrayfun(@(x)x.XOffset, b)';
xticks(ticksList(:))
xticklabels([names(1,:)';names(2,:)'])
xtickangle(90)
ax1 = gca;
ax2 = axes('Position', get(ax1, 'Position'),'Color', 'none');
set(ax2, 'XAxisLocation', 'top','YAxisLocation','Right');
set(ax2, 'XLim', get(ax1, 'XLim'),'YLim', get(ax1, 'YLim'));
set(ax2, 'YTick', []);
xticks(b(1).XData)
xticklabels(categories)
如果您想进一步了解如何在matlab中为颜色指定名称,请检查
here
.
另一件你可以玩的事情是设置
colormap
如所解释的
here
.