[英]MATLAB contour plot of 2D scatter
如果我理解正確,那么您正在使用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.