Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中绘制对角线直方图_Matlab_Matlab Figure - Fatal编程技术网

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

如何在Matlab中绘制对角线直方图,matlab,matlab-figure,Matlab,Matlab Figure,给定散射数据或矩阵,我想生成一个很好的图,如下图所示,包含所有3个直方图和一个彩色矩阵。我特别感兴趣的是对角线直方图,理想情况下,它对应于矩阵的对角线: 源图: 现有的命令scatterhist对于生成这种类型的图形没有那么强大。有什么想法吗 谢谢 编辑: 根据@Cris Luengo的提示,我想出了下面的代码,在倾斜的柱状图上做了一些第一步工作:正在工作(欢迎帮助) 编辑2:使用旋转 phi = pi/4; R = [cos(phi),-sin(phi);sin(phi),cos(phi)

给定散射数据或矩阵,我想生成一个很好的图,如下图所示,包含所有3个直方图和一个彩色矩阵。我特别感兴趣的是对角线直方图,理想情况下,它对应于矩阵的对角线:

源图

现有的命令scatterhist对于生成这种类型的图形没有那么强大。有什么想法吗

谢谢

编辑

根据@Cris Luengo的提示,我想出了下面的代码,在倾斜的柱状图上做了一些第一步工作:正在工作(欢迎帮助)

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

这里有一个绘制对角线直方图的方法,如果你能做到这一点,我相信你也能计算出其余的

  • 计算直方图,仓位计数为
    h
    ,仓位中心为
    b

  • 构建坐标矩阵,将x轴上某点的坐标附着在直方图的左右两端:

    coords = [b(:),h(:)];
    coords = [coord;b(end),0;b(1),0];
    
  • 现在可以使用绘制直方图,如下所示:

    patch(coords(1,:),coords(2,:));
    
  • 要绘制旋转直方图,在使用
    面片之前,只需将
    坐标
    矩阵与旋转矩阵相乘即可:

    phi = pi/4;
    R = [cos(phi),-sin(phi);sin(phi),cos(phi)];
    coords = R * coords;
    
  • 您可能需要移动绘图以将其放置在与其他元素相对应的正确位置

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


    这将是一个小的工作,让所有的东西都在你显示的情节,但没有一个是困难的。使用低级的
    图像
    补丁
    文本
    来放置这些类型的元素,不要尝试使用高级的绘图功能,例如
    绘图
    ,在这种情况下,它们与低级的功能相比没有任何好处。

    这需要大量的手工“黑客”操作打印功能的一部分。没有简单的方法。数字源说你可以向作者请求代码。你试过了吗?另外,我建议您看看的可视化功能(虽然我没有看到任何与您需要的完全相同的功能,但是您可能会发现其他类型的可视化功能很有用)。谢谢Cris!不过,coords矩阵的定义似乎有问题。例如,使用这些向量,b=[0123456789];10; h=[0.33477 0.40166 0.20134 0.053451 0.008112 0.000643 2.7e-05 0 0 0];我得到了一个错误的补丁…@Oliver:oops,我把
    coords
    数组的构造写错了,对不起。添加的两个点应位于x轴上(即y=0)。这些完成了多边形,因此它有一条沿x轴并位于数据线下方的边。@Oliver:如果旋转轴,将无法添加未旋转的元素。修改坐标以旋转直方图,而不是旋转轴@奥利弗:将x轴和y轴设置为相等缩放(
    轴相等
    )。并关闭轴的可见性,因为它们不再正确表示数据。原来的数字也没有这些。
    phi = pi/4;
    R = [cos(phi),-sin(phi);sin(phi),cos(phi)];
    coords = R * coords;