如何在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

enter image description here

编辑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])

enter image description here


这将需要相当多的手动“黑客”绘图函数。 没有简单的方法。 - Ander Biguri
2
图表来源表示您可以向作者请求代码。您试过了吗?此外,我建议您查看Bioinformatics toolbox的可视化功能(虽然我没有看到与您所需完全相同的内容,但还有其他类型的可视化可能会对您有用)。 - Dev-iL
1个回答

0
这里有一个绘制对角线直方图的配方,如果你能做到这一点,我相信你也能想出剩下的部分。
  1. 计算直方图,bin的数量为h,bin的中心为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;
    

你可能需要移动图形以将其放置在其他元素的正确位置。

我建议您将所有这些图形元素放置在同一个坐标轴对象中;您可以将坐标轴的可见性设置为“关闭”,以便它仅作为其他元素的画布。

要将所有元素放置在所示的绘图中,需要一些工作,但没有任何难度。使用低级别的imagelinepatchtext来放置这些类型的元素,不要尝试使用更高级别的绘图函数,如plot,因为它们在这种情况下并没有提供任何好处。


谢谢Cris!不过,坐标矩阵的定义似乎有些问题。例如,使用这些向量,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]。我得到了一个错误的补丁... - Oliver Amundsen
@Oliver:糟糕,我写的coords数组的构建方式有误,请原谅。加入的两个点应该在x轴上(即y=0)。这些点组成了多边形,使其具有沿着x轴和数据线下方的边。 - Cris Luengo
@Oliver:如果你旋转坐标轴,就无法添加未旋转的元素。修改你的坐标来旋转直方图,而不是旋转坐标轴! - Cris Luengo
@Oliver:将x轴和y轴设置为等比例缩放(axes equal)。并关闭坐标轴的可见性,因为它们不再正确地表示数据。原始图形也没有这些。 - Cris Luengo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接