一、常規的散點圖繪製
散點圖是數據可視化中比較常見的形式,常用來表示兩個變數之間的關係。
在Matlab中,我們可以通過scatter函數來繪製散點圖。下面是一個簡單的散點圖示例:
x = rand(1,100);
y = rand(1,100);
scatter(x,y)
該示例中使用rand函數生成了兩個長度為100的隨機序列,然後調用scatter函數將這兩列序列轉換為散點圖。
下面我們來解釋一下scatter函數的構造:
scatter(x,y) %簡單散點圖繪製
scatter(x,y,s) %改變散點大小
scatter(x,y,s,c) %改變散點顏色
scatter(x,y,s,c,'filled') %帶填充的散點圖
scatter(___,'filled') %用默認值填充散點圖
散點圖的繪製是一個比較基礎的知識點,在此不做過多的闡述。針對不同場景的散點圖繪製方式各異,我們可以進一步了解Matlab中各種特殊情況下的散點圖繪製方式。
二、定製線條的散點圖繪製
定製散點圖是一種常見且有用的數據展示方式,可以進一步突出各數據點的差異性。
在Matlab中,我們可以使用plot函數來繪製定製化的散點圖。
下面是一個通過plot函數繪製的定製化散點圖:
x = randn(1,20);
y = randn(1,20);
sizes = rand(1,20)*200+50; %隨機生成點的大小
colors = rand(20,3); %隨機生成點的顏色
plot(x,y,'ko','MarkerFaceColor','g','MarkerSize',sizes)
axis([-3 3 -3 3])
grid on
在上述示例中,我們生成了兩列隨機數,並通過rand函數生成了大小為20的序列。
繪製定製散點圖時,我們可以調整點的大小、顏色等,這一點在代碼示例中得到體現。
三、基於線連接的散點圖
基於線連接的散點圖相比於常規散點圖,能夠表達更多的數據信息和關聯性。
在Matlab中,我們可以使用plot函數來實現這一點。
下面是一個通過plot函數生成的基於線連接的散點圖:
x = rand(1,10);
y = rand(1,10);
plot(x,y,'o-')
axis([-0.2 1.2 -0.2 1.2])
grid on
代碼示例中,我們生成了兩列長度為10的隨機數,然後使用plot函數生成基於線連接的散點圖。
通過這種方式,我們可以實現更加清晰的關聯性展示。
四、高效的散點圖與連線圖繪製
由於Matlab對於連線圖的支持度較弱,因此在許多場景下我們需要繪製自定義的連線圖。
下面我們來逐步講解如何繪製高效的散點圖與連線圖。
1. 繪製散點圖
在Matlab中,我們可以使用scatter函數方便地繪製散點圖。
下面是一個常規的scatter函數繪製的散點圖。
rng('default') %返回默認種子
X = randn(50,2);
scatter(X(:,1),X(:,2),30)
axis([-3 3 -3 3])
grid on
在這個示例中,我們首先使用randn函數生成一個50*2的隨機矩陣,然後通過scatter函數將這個矩陣轉換為散點圖。
在實際應用中,我們還可以調整scatter函數的參數,如點大小、顏色、形狀等,從而更加準確地呈現數據信息。
2. 繪製連線圖
在Matlab中,我們可以使用plot函數來繪製基本的連線圖。但當需要繪製大量連線時,使用plot函數繪製連線圖會非常耗時。
因此,我們需要使用更高效的方式繪製連線圖,這種方法被稱為「線圈法」(loop method)。
下面是一個基於線圈法繪製的連線圖:
rng('default') %返回默認種子
X = randn(50,2);
idx = randperm(50);
lIdx = [idx idx(1)]; %產生連接到其本身的圖形
b = sqrt(sum(diff(X(lIdx,:),1).^2,2));
[dummy,maxIdx] = max(b);
plot(X(lIdx(maxIdx,:),1),X(lIdx(maxIdx,:),2),'ko-')
axis([-3 3 -3 3])
grid on
代碼示例中,我們首先生成一個50*2的隨機矩陣。
使用randperm函數將50個數字進行隨機排列,隨後在最後添加一個連接到自身的數字,最後形成一共51個數字。
計算最遠的兩個點的距離,並繪製出來。
3. 繪製散點圖和連線圖
當需要同時繪製散點圖和連線圖時,我們可以基於上述方法實現。
下面是一個綜合示例:
rng('default') %返回默認種子
X = randn(50,2);
idx = randperm(50);
%散點圖
hScat = scatter(X(:,1),X(:,2),50,'b','filled');
hold on
%連線圖
lIdx = [idx idx(1)]; %產生連接到其本身的圖形
b = sqrt(sum(diff(X(lIdx,:),1).^2,2));
[dummy,maxIdx] = max(b);
hLine = plot(X(lIdx(maxIdx,:),1),X(lIdx(maxIdx,:),2),'r','LineWidth',2);
axis([-3 3 -3 3])
grid on
實現方式與繪製連線圖基本相同,只是在散點圖繪製部分,我們需要使用scatter函數來繪製散點圖。
通過將兩個圖層疊在一起,我們可以同時展示散點圖和連線圖,並使圖形呈現更直觀、更明了的效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241385.html