2015-06-10 33 views
0

考慮在Matlab散點圖與x軸蜱不等距

以下散點圖
A=[1 0 0 0 2 0 0 0 0 0 0 0 1 2 0 0 0 2 1 200 300]'; 
xRange = 0: max(A); 
prob=zeros(size(xRange,2),1); 
for r=1:size(xRange,2) 
prob(r) = sum(ismember(A,xRange(r)))/size(A,1); 
end 

scatter(xRange,prob, 'b'); 
xlim([-2 max(A)+2]) 
ylim([-0.5 1.5]) 

我想改變分散的樣子,以使其更清晰的方式:這個想法是把下面的蜱在x軸

[-0.5 0 1 2 3 301] 

但棘手的問題是,他們應該是等距的,這樣我可以上的prob較高值散點圖的部分放大。

有什麼想法?

+0

你想圖形等距的刻度,但對應的刻度值應該是那些數字? –

+0

是的,謝謝! – user3285148

+0

看看我的答案。 –

回答

0

實現此目的的一種方法是使用插值將數據轉換爲新的比例。比方說,你想要的數據值

tickVal = [-0.5 0 1 2 3 301]; 

出現在圖形位置

tickPos = 0 : 5; 

確定由插值所有數據的圖形位置,並繪製轉換後的數據:

xTransformed = interp1(tickVal, tickPos, xRange); 
scatter(xTransformed, prob, 'b'); 
xlim([min(tickPos), max(tickPos)]) 
ylim([-0.5 1.5]) 

現在我們必須確保滴答不反映轉換的,但原始數據值:

set(gca, 'XTick', tickPos) 
set(gca, 'XTickLabel', num2cell(tickVal)) 

結果看起來是這樣的:

這是你想要的嗎?