簡體   English   中英

如何在Matlab中繪制對角線直方圖

[英]How to plot a Diagonal Histogram in Matlab

給定散射數據或矩陣,我想生成一個很好的圖,如下圖所示,包含所有3個直方圖和一個彩色矩陣。 我對對角線直方圖特別感興趣,理想情況下,它對應於矩陣的對角線:

www.med.upenn.edu/mulab/jpst.html

來源圖www.med.upenn.edu/mulab/jpst.html

現有命令scatterhist對於生成此類圖形並不是那么強大。 有任何想法嗎?

謝謝!

編輯

按照@Cris Luengo的提示,我想出了以下代碼,它在傾斜的直方圖中做了一些第一次工作:正在進行中工作(幫助歡迎)!!

b = [0     1     2     3     4     5     6     7     8     9    10];
h = [0.33477 0.40166 0.20134 0.053451 0.008112 0.000643 2.7e-05 0 0 0  0];
wid = 0.25; bb = sort([b-wid b-wid b+wid b+wid]);
kk = [zeros(numel(h),1) h(:) h(:) zeros(numel(h),1)];
kk = reshape(kk',[1,numel(kk)]);

pp=patch(bb,kk,'b');axis([-.5 5 0 .5])
set(gca,'CameraUpVector',[-1,.08,0]);axis square

在此輸入圖像描述

編輯2:使用旋轉

phi = pi/4;
R = [cos(phi),-sin(phi);sin(phi),cos(phi)];
rr = [bb' kk'] * R;
bb = rr(:,1); kk = rr(:,2);
patch(bb,kk,'b'); axis([-.5 3 -4 .5])

在此輸入圖像描述

這是繪制對角線直方圖的一個方法,如果你能做到這一點,我相信你也可以弄清楚其余部分。

  1. 計算直方圖,箱數是h ,箱中心是b

  2. 構建坐標矩陣,在直方圖的左端和右端附加x軸上的點的坐標:

     coords = [b(:),h(:)]; coords = [coord;b(end),0;b(1),0]; 
  3. 使用patch您現在可以繪制直方圖,如下所示:

     patch(coords(1,:),coords(2,:)); 
  4. 要繪制旋轉直方圖,您可以在使用patch之前簡單地將coords矩陣與旋轉矩陣相乘:

     phi = pi/4; R = [cos(phi),-sin(phi);sin(phi),cos(phi)]; coords = R * coords; 

您可能需要移動繪圖以將其放置在其他元素的正確位置。

我建議您將所有這些圖形元素放在同一個軸對象中; 您可以將軸的可見性設置為“關閉”,以便它僅作為其他元素的畫布。

將所有內容放置在您顯示的圖中將會有一些工作,但這些都不困難。 使用低級imagelinepatch text本來放置這些類型的元素,不要嘗試使用更高級別的繪圖功能,例如plot ,它們不會提供任何優於其中的低級繪圖功能案件。

暫無
暫無

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

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