數據特性:
有三個比較組別,每組都有相同的績分等級。
在此,欲比較組別間的積分分布情況。
例題:
三隻小馬比賽搶四種水果,搶到的結果如下圖。
Matlab 程式碼:
%輸入組別數據
group=[0 8 16 5;20 6 0 0;5 5 5 5]; %分別輸入三隻小馬的結果,以分號做組別區隔
%數據百分比轉換
sum1=sum(group(1,:)); %對大馬的數據進行加總
sum2=sum(group(2,:)); %對中馬的數據進行加總
sum3=sum(group(3,:)); %對小馬的數據進行加總
group(1,:)=(group(1,:)./sum1).^0.5; %對大馬的數據百分比化,並開根已達面積比目的。若欲使泡泡大小為半徑比則更改為group(1,:)=group(1,:)./sum1。
group(2,:)=(group(2,:)./sum2).^0.5; %中馬,同上
group(3,:)=(group(3,:)./sum3).^0.5; %小馬,同上
clear sum1 sum2 sum3; %清除已經不再使用的變數
%畫圖
set(figure,'color','white') %呼叫出繪圖窗,並設定底色為白色
hold; %由於泡泡是一個一個畫上去的,因此繪圖過程中必須把握住
g=3; %代表組別
for i=1:g %依照組別進行繪圖
for j=1:4 %代表四種不同水果
if group(i,j)>0 %由於偏食的大馬及中馬沒有搶到四種水果,必須篩選掉數值為0的部分
plot(i,j,'.','Markersize',group(i,j)*150,'color',[1-i/g 1-i/g 1-i/g]) %'.'代表實心點,可更改為空心圓:'o',Markersize為設定點大小的屬性,group中的數值已經處理過,再乘上常數150(更改此常數不影響比例關係),color為設定點的色彩屬性,[]中有三組數據代表RGB,數值區間為0-1,此設定使組間有不同程度的灰色。
end
end
end
%繪圖區設定
xlim([0.5 3.5]); %設定x軸的兩端
ylim([0.5 4.5]);
set(gca,'xticklabel',[],'xtick',[1:1:3],'yticklabel',[],'ytick',[1:1:4]) %刪除xy標籤及設定刻度
xxposi=[1 2 3]; %設定x軸標籤的x值
xyposi=0.3*ones(1,3); %設定x軸標籤的y值
yxposi=0.4*ones(1,4); %設定y軸標籤的x值
yyposi=[1:1:4]; %設定y軸標籤的y值
text(xxposi,xyposi,{'大馬','中馬','小馬'},'HorizontalAlignment','center','FontSize', 14); %HorizontalAlignment 為對齊方式,有左中右三種。
text(yxposi,yyposi,{'榴槤','香蕉','木瓜','蘋果'},'HorizontalAlignment','right','FontSize', 14);
繪圖結果:
屬性更動:
若要繪製彩色可以更改color屬性
plot(i,j,'.','Markersize',group(i,j)*150,'color',[i/g 1-i/g 1-i/g])
這樣就可以得到彩色版的圖了,如下(不適合黑白影印)
此數據處理用於看出組內百分比例的情況,並非所有組綜合後的百分比例。
這種作圖法較少見,但表示法清楚明瞭,可以善加運用。
Octave執行時必須多修正gca position ,文字標籤才不會切到。完整程式碼更改如下。
回覆刪除---------------------------------------------------------------------------------------------------
group=[0 8 16 5;20 6 0 0;5 5 5 5];
sum1=sum(group(1,:));
sum2=sum(group(2,:));
sum3=sum(group(3,:));
group(1,:)=(group(1,:)./sum1).^0.5;
group(2,:)=(group(2,:)./sum2).^0.5;
group(3,:)=(group(3,:)./sum3).^0.5;
clear sum1 sum2 sum3;
set(figure,'color','white')
hold;
g=3;
for i=1:g
for j=1:4
if group(i,j)>0
plot(i,j,'.','Markersize',group(i,j)*150,'color',[1-i/g 1-i/g 1-i/g])
end
end
end
xlim([0.5 3.5]);
ylim([0.5 4.5]);
set(gca,'position',[0.1 0.1 0.8 0.8],'xticklabel',[],'xtick',[1:1:3],'yticklabel',[],'ytick',[1:1:4])
xxposi=[1 2 3];
xyposi=0.3*ones(1,3);
yxposi=0.4*ones(1,4);
yyposi=[1:1:4];
text(xxposi,xyposi,{'大馬','中馬','小馬'},'HorizontalAlignment','center','FontSize', 14);
text(yxposi,yyposi,{'榴槤','香蕉','木瓜','蘋果'},'HorizontalAlignment','right','FontSize', 14);