matlab条形图:标记3个条形图,每个条形图只有一个值

matlab条形图:标记3个条形图,每个条形图只有一个值,matlab,plot,legend,Matlab,Plot,Legend,我需要在matlab中制作一个3条的条形图。三个条的值存储在x中。现在我想让a做一个图例:每个条都应该用一个字母标记,例如“a”、“B”、“C” x = rand(1,3); bar(x); legend('A','B','C'); 不起作用。 然后我尝试了这个例子: 但是,一旦你将每个类别中的条目数减少到1,你就会收到一条错误消息,但我认为该消息是错误的=/它适用于任何数字,但不适用于1 那么这个问题有一个简单的解决方案吗?你想要的是一个“三系列图”——不幸的是,一旦你把它设为1x3,Ma

我需要在matlab中制作一个3条的条形图。三个条的值存储在x中。现在我想让a做一个图例:每个条都应该用一个字母标记,例如“a”、“B”、“C”

x = rand(1,3); bar(x); legend('A','B','C'); 
不起作用。 然后我尝试了这个例子:

但是,一旦你将每个类别中的条目数减少到1,你就会收到一条错误消息,但我认为该消息是错误的=/它适用于任何数字,但不适用于1

那么这个问题有一个简单的解决方案吗?

你想要的是一个“三系列图”——不幸的是,一旦你把它设为1x3,Matlab就会认为它只是一个单一系列。我们必须让它以为你有三个系列。以下是您如何做到这一点:

x = rand(1,3);
x2 = [x; x*0];   % add a second row of all zeros
figure
bar(x2);         % now we have a plot with an ugly second category
xlim([0.5 1.5]); % trick that hides second category
legend('a','b','c'); % add the legend
set(gca, 'XTickLabel', ''); % hide the '1' on the X axis (or make it whatever you want)
title 'Bar plot with legend - demo'
结果是这样的:


我相信这正是您的要求。

非常感谢!这正是我要找的!我确实想到,绘制单个系列并更改
XTickLabel
以反映图例(“分类轴”)将更为传统(a、b、c而不是X轴上的1、2、3)-但这不是您要求的。像这样你可以得到不同的颜色。。。