如何在条形图上添加图例?

时间:2019-07-17 18:52:17

标签: matlab

我有以下条形图:enter image description here

创建它的代码:

names = {'a', 'b',.....}
b = bar(cell2mat(data_plot'));
legend(b,names,'Location', 'eastoutside');
ylabel('Teest');

因此,我想向其添加图例,但不是从每个条形图(蓝色,黄色,橙色)而是图例组(1、2、3、4 ...)
在名称中保存了12个组的所有名称,但是我不知道如何将它们设置为图例的值。相反,我得到了描述每个条形图的其他值?

更新:更清楚地说,我不想使用来自 names 的值来更改x-aches(1,2,..)上的值。我希望(1,2 ..)保持原样以及它们的状态,但是我想更改右侧的表,在该表中有蓝色,橙色和黄色条的图例,其值对应于(1,2,3 ..)与名称中的那个。
示例:1是来自'USA'的数据,因此 names 中的第一个值是'USA'。这意味着我想在右边的桌子上像1:“美国”

2 个答案:

答案 0 :(得分:3)

您无法直接做您想做的事情,需要一次绘制每个组,请参见MATLAB Answers上的this related post和SO上的this question。这是基于此的解决方法,但是每个组中的条形必须使用相同的颜色:

Y = rand(5,3);
names = {'a';'b';'c';'d';'e'};
colours = {'g';'r';'b';'y';'c'};
h = zeros(size(Y));
for k = 1:size(Y,1)
  h(k,:) = bar(3*k-2,Y(k,:),colours{k});
  hold on
end

xlim([0 15]);
set(gca,'XTick',[1 4 7 10 13]);
set(gca,'XTickLabel',{'1';'2';'3';'4';'5'});
ylabel('Test');

legend(h(:,1),names,'location','northeastoutside')

产生以下内容:

enter image description here

答案 1 :(得分:-1)

编辑:为了遗产而离开。忽略。我误解了问题,跳到我想到的答案,而不是花时间阅读和测试解决方案。

尝试set(gca, 'xticklabel', names);

还请务必查看以下原因: