簡體   English   中英

2D散射的MATLAB等高線圖

[英]MATLAB contour plot of 2D scatter

我想做的很簡單,我似乎無法讓MATLAB來做。 我想使用2D數據集繪制輪廓。

我的數據集很大; 2 x844240。我可以做一個散點圖,

scatter(Data(1,:), Data(2,:));

在論壇上仔細閱讀后,我在Matlab中發現了密度分布的散點圖 ,其中繪制了直方圖。 這就足夠了,但是,我想覆蓋這些情節。

在此處輸入圖片說明

問題是它們的軸不同,我的散點數據的軸為[0 0.01 0 2500]; 而直方圖為[0 100 0 100]。

有沒有一種方法可以在不修改圖像的情況下更改直方圖的軸值?

謝謝!

如果我理解正確,那么您正在使用hist3來構建直方圖,然后使用imagesc進行繪制。 您可以使用hist3的第二個輸出參數來獲取直方圖bin中心,然后將其傳遞給imagesc ,例如

nBins_x = 100;
nBins_y = 100;
[counts, bin_centers] = hist3(Data, [nBins_x nBins_y]);
x_bin_centers = bin_centers{1};
y_bin_centers = bin_centers{2};
imagesc(x_bin_centers, y_bin_centers, counts)

其他一些注意事項:

  • 在您的情況下,將[2 x N]矩陣傳遞給hist3時需要轉置該矩陣,而hist3需要[N x 2]矩陣。

  • imagesc將第一個軸(我一直稱之為“ x”軸)放在垂直軸上,將第二個軸放在水平軸上。 如果要翻轉它,可以使用:

     imagesc(y_bin_centers, x_bin_centers, counts') 
  • 如果要顯式指定直方圖箱(例如,與散點圖匹配),則可以在hist3的參數中指定:

     x_bin_centers = linspace(0, .01, 100); y_bin_centers = linspace(0, 2500, 100); counts = hist3(Data, {x_bin_centers, y_bin_centers}; 

而且,如果要繪制輪廓圖,可以使用(請注意, contour以與imagesc不同的順序接受軸參數):

contour(x_bin_centers, y_bin_centers, counts');

如果您對輪廓的鋸齒狀不滿意,則可以考慮使用內核密度估計值而不是直方圖(檢查ksdensity) (糟糕,看起來ksdensity僅是一維的。但是對於雙變量內核密度,存在文件交換提交估計)。

暫無
暫無

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

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