如何在Matlab中绘制对角线直方图
给定散射数据或矩阵,我想生成一个很好的图,如下图所示,包含所有3个直方图和一个彩色矩阵。我特别感兴趣的是对角线直方图,理想情况下,它对应于矩阵的对角线: 源图: 现有的命令scatterhist对于生成这种类型的图形没有那么强大。有什么想法吗 谢谢 编辑: 根据@Cris Luengo的提示,我想出了下面的代码,在倾斜的柱状图上做了一些第一步工作:正在工作(欢迎帮助) 编辑2:使用旋转如何在Matlab中绘制对角线直方图,matlab,matlab-figure,Matlab,Matlab Figure,给定散射数据或矩阵,我想生成一个很好的图,如下图所示,包含所有3个直方图和一个彩色矩阵。我特别感兴趣的是对角线直方图,理想情况下,它对应于矩阵的对角线: 源图: 现有的命令scatterhist对于生成这种类型的图形没有那么强大。有什么想法吗 谢谢 编辑: 根据@Cris Luengo的提示,我想出了下面的代码,在倾斜的柱状图上做了一些第一步工作:正在工作(欢迎帮助) 编辑2:使用旋转 phi = pi/4; R = [cos(phi),-sin(phi);sin(phi),cos(phi)
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
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;
这将是一个小的工作,让所有的东西都在你显示的情节,但没有一个是困难的。使用低级的
图像
,行
,补丁
和文本
来放置这些类型的元素,不要尝试使用高级的绘图功能,例如绘图
,在这种情况下,它们与低级的功能相比没有任何好处。这需要大量的手工“黑客”操作打印功能的一部分。没有简单的方法。数字源说你可以向作者请求代码。你试过了吗?另外,我建议您看看的可视化功能(虽然我没有看到任何与您需要的完全相同的功能,但是您可能会发现其他类型的可视化功能很有用)。谢谢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;