我正在尝试创建一个条形图,其中我的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');
答案 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年的条目将为零,因此您无法看到它。然后,您可以将轴设置为与其他图表相同。