簡體   English   中英

Matlab中x軸刻度不等距的散點圖

[英]Scatter plot in Matlab with x-axis ticks not equidistant

考慮以下Matlab中的散點圖

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值放大散點圖的部分。

任何想法?

實現此目的的一種方法是使用插值將數據轉換為新的比例。 假設您要數據值

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))

結果看起來像這樣:

這是你想要的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM