2016-10-16 43 views
0

plot函數允許我們繪製所有具有恆定大小的標記s高效地繪製不同個體大小的標記

figure; 
x = -10 : 10; 
y = x .^ 2; 
s = 10; 
plot(x, y, 'bo', 'MarkerSize', s); 

假設相反,我們希望每個標記有一些個體大小sx。例如,sx = abs(x) + 1

實現此目的的一種方法是使用for循環。

figure; 
x = -10 : 10; 
y = x .^ 2; 
sx = abs(x) + 1; 

hold on; 
for i = 1 : length(x) 
    plot(x(i), y(i), 'bo', 'MarkerSize', sx(i)); 
end 

這對於少量的x足夠好。但是,如果x更大?例如,x = -100 : 0.01 : 100

這現在需要更長的時間,而plot(x, y, 'bo', 'MarkerSize', 100)仍然幾乎立即完成。理想情況下,我們可以做些事情,比如plot(x, y, 'bo', 'MarkerSize', sx),其中sx是大小的向量,其中每個條目sx對應於xy中的條目。不幸的是,這會給出Value not a numeric scalar的錯誤。

有沒有一種有效的方式來繪製標記,其中每個標記具有不同的個體大小?

回答

2

什麼你想要做的是能夠利用scatter代替plot如下:

scatter(x,y,abs(x)+1)