[英]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.