我正在尝试使用我的数据(1x150)在Matlab中创建直方图,但它出错了。首先我应该有12个刻度,每个刻度都有一个值,但matlab obly给我6个刻度。其他6个嘀嗒声丢失了我无法弄清楚原因。
我的数据;
myData.income=
175000
65000
35000
55000
5000
65000
25000
45000
55000
95000
45000
45000
...
5000
15000
这是我的代码;
STATS.histograms=figure(8);
histogram(myData.income)
xlabel('Annual income') % x-axis label
ylabel('# of participants') % y-axis label
xticks([ 0 20000 40000 60000 80000 100000 120000 140000 160000 180000 200000 220000])
xticklabels({'5.000 < ','15.000','25.000','35.000','45.000', ...
'55.000','65.000','75.000','85.000','95.000','125.000','150.000 >'})
xlim([0 230000]); %limits
ylim([0 45]);
title('Income ');
savefig('income');
我也检查了我的数据,没有遗漏的值。当我运行这个代码时,matlab只给出了一个直方图,其中包含15.000 - 85.000个字符。
我做错了什么?
答案 0 :(得分:0)
我发现了自己的错误。当我使用hiscounts
时,它只给我6个值。由于我的收入被记录为5000,15000,25000等......这个功能增加了每一个&#39; 5000&#39;值为5000列。
更清楚;它将25000视为5000.当我运行&#39; histcounts&#39;功能它给了我这个输出;
>> histcounts(myData.income)
ans =
26 44 16 6 6 3
这是我不准确的histogrtam数据的问题。所以我用这些线重新编了我的每个收入值;
%hist transform
bir = myData.income(:,1) == 5000 ;
iki = myData.income(:,1) == 15000 ;
uc = myData.income(:,1)== 25000;
dort = myData.income(:,1)== 35000;
bes = myData.income(:,1) == 45000;
alti = myData.income(:,1)==55000;
yedi = myData.income(:,1)==65000;
sekiz = myData.income(:,1)==75000;
dokuz = myData.income(:,1)==85000;
on = myData.income(:,1)==95000;
onbir = myData.income(:,1)==125000;
oniki = myData.income(:,1)==175000;
% recoding
myData.income(bir) = 1 ;
myData.income(iki) = 2 ;
myData.income(uc) = 3 ;
myData.income(dort) = 4 ;
myData.income(bes) = 5 ;
myData.income(alti) = 6 ;
myData.income(yedi) = 7 ;
myData.income(sekiz) = 8 ;
myData.income(dokuz) = 9 ;
myData.income(on) = 10 ;
myData.income(onbir) = 11 ;
myData.income(oniki) = 12 ;
由于这些行,不再覆盖或绑定到相同的值。
小心,因为我们改变了我们的值(从5000到1),我们需要选择我们的xticks
。所以在我的例子中,新的刻度应为[1 2 3 4 5 6 7 8 9 10 11 12]
,我们的xlimit
将为0到13或1到12.这取决于你!我个人喜欢y轴和我的数据栏之间的空间。这是最终的代码;
STATS.histograms=figure(8);
histogram(myData.income)
xlabel('Annual income') % x-axis label
ylabel('# of participants') % y-axis label
xticks([ 1 2 3 4 5 6 7 8 9 10 11 12])
xticklabels({'5.000 < ','15.000','25.000','35.000','45.000', ...
'55.000','65.000','75.000','85.000','95.000','125.000','150.000 >'})
xlim([0 13]); %limits
ylim([0 45]);
title('Income ');
savefig('income');
修改强>
您可能希望将重新编码的变量保存到其他变量而不是原始变量中。