条形图matlab由标量向量

时间:2014-05-01 19:58:30

标签: matlab charts bar-chart

我正在尝试创建一个条形图,其中我的x轴仅显示2006年的一个数据点,但是与2006年相关的3个不同数据。我正在执行以下操作,但我收到了 “X必须与Y的长度相同”的错误。

以下是我的代码,非常感谢您的帮助:

X=[2006] %year

   % Create data for childhood disease cases

   measles = [38556];

   mumps = [20178];

   chickenPox = [37140];


   % Create a vertical bar chart using the bar function

   figure;

   bar(X, [measles' mumps' chickenPox'],'group');


   % Set the axis limits

   %axis([0 13 0 40000]);


   % Add title and axis labels

   title('Childhood diseases by month');

   xlabel('Month');

   ylabel('Cases (in thousands)');


   % Add a legend

   legend('Measles', 'Mumps', 'Chicken pox');

1 个答案:

答案 0 :(得分:0)

您收到此错误是因为X只是一个元素而您正在使用三个不同的Y值。

我认为这个问题要求你退后一步。你为什么要用相同的X值绘制所有三个?如果按照您的指定工作,则所有三个都将在彼此之上。

如果X轴将每个条标记为麻疹,腮腺炎或鸡痘,那么观察者的信息量是否会提高?

尝试:

bar([measles' mumps' chickenPox']);
set(gca,'XTickLabel',{'Measles','Mumps','Chicken Pox'});

编辑:

我看到了你的追求。你几乎是正确的。问题在于,由于您只有一列数据,因此matlab假定您不想创建一个组,而只是将这三个值绘制为唯一的X值。所以我们需要通过创建另一个数据点来稍微欺骗它。

% //Create two columns, one of them zeros
data = [[measles;mumps;chickenPox],[0;0;0]];
bar([X,X+1],data'); % //The 2007 entry will not be visible

这将在2006年创建一个组,2007年的条目将为零,因此您无法看到它。然后,您可以将轴设置为与其他图表相同。