gpt4 book ai didi

matlab - 如何在 Matlab 中绘制对角直方图

转载 作者:行者123 更新时间:2023-12-02 08:20:14 25 4
gpt4 key购买 nike

给定散点数据或矩阵,我想生成一个漂亮的图,如下所示,其中包含所有 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

最佳答案

这里有一个绘制对角直方图的方法,如果你能做到,我相信你也能弄清楚其余的。

  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;

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

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

将所有内容按照您所展示的情节放置需要一些工作,但这并不困难。使用低级的imagelinepatchtext来放置这些类型的元素,不要尝试使用更高级别的绘图函数,例如 plot,在这种情况下,与低级别的绘图函数相比,它们没有提供任何好处。

关于matlab - 如何在 Matlab 中绘制对角直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51700364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com