如何在plotmatrix中使用“hold on”?

23次浏览(过去30天)
Carleen麦肯纳
Carleen麦肯纳 2021年8月19日
评论道: Carleen麦肯纳2021年8月20日
我目前正在尝试运行多个模拟,并通过“坚持”将来自模拟的采样概率密度函数的所有图相互叠加在同一个图形上。对于直方图函数,如果我绘制一个变量,这似乎是可行的,但如果我绘制多个变量来显示边际分布和联合分布,我想使用plotmatrix。然而,它看起来像plotmatrix和“hold on”并不完全兼容,并且不会产生与使用直方图“hold on”相同的结果。
我这样做的代码格式大致如下(为通用性而简化):
N = 1;
N <= 5
样本= my_function(参数);
图(1)
直方图(样本)
持有
结束
我想做的很简单:
plotmatrix(样本)
持有
当我想绘制多个变量时不用直方图。但我试着用plotmatrix来表示一个变量,以为它会做和直方图一样的事情,但它没有——这些图根本没有叠加,而是相互替换。
实现我想做的事情的正确方法是什么?
2的评论
Carleen麦肯纳
Carleen麦肯纳 2021年8月20日
对不起,我一定是没说清楚。我只是想把问题说得更笼统些。为了不那么一般,我正在运行一种蒙特卡罗抽样过程,我对同一个变量连续运行了几次。我不希望边际分布和联合分布都在一个图上。我希望它具有绘图矩阵的格式,但所有运行都叠加在一起,在各自的轴上得到联合和边际分布。
我给出了直方图作为我想要的例子,因为如果我只对一个变量进行采样,我将运行采样过程五次,并使用“hold on”,以便每个结果分布显示在同一轴上。我想要这个,但是以plotmatrix的形式,在plotmatrix中的每个轴上都有五个不同的分布,分别来自五次不同的运行。

登录评论。

接受的答案

戴夫B
戴夫B 2021年8月20日
编辑:戴夫B 2021年8月20日
Plotmatrix,因为它使用了多个轴,所以在hold on时工作得并不好…正如你所发现的。
我可以想到三个解决方案:万博 尤文图斯
  1. gplotmatrix统计和机器学习工具箱中的函数面向具有多个组的plot矩阵。这将需要重新组织你的数据(即把所有的集合放到一个矩阵中,并用分组变量标记哪个是哪个)。这可能是最简单的方法(如果你有工具箱的话)
  2. 一种解决这个问题的方法是在一个新的图形中创建第二个plot矩阵,然后将元素移动到旧的图形中。这里有几个额外的步骤来调整界限和获得单独的颜色。(下面两个数据集的例子)
  3. 我想,如果是我,我会忍不住编写自己的迷你plotmatrix代码来处理这些数据……但这有点复杂。实际上,plotmatrix只是一堆散点和直方图,它是很久以前写的tiledlayout而且nexttile这使得做布局工作明显更容易。但即使是写一个简单的图表也是一项事业!
x1 = abs (randn (1000 4));
x2 = abs (randn (1000 4));
[a, b, c, d, e) = plotmatrix (x1);
ftemp =图(“可见”“关闭”);
[a2、b2, c2, d2, e2) = plotmatrix (x2);
I = 1:数字(a2)
a2 (i) .Parent = b(我);
a2(我).SeriesIndex = 2;
取极限并集:
xlim (b) (i), [min ((b) (i) .XLim (1) b2 (i) .XLim(1)])马克斯((b) (i) .XLim (2) b2 (i) .XLim (2)))))
ylim (b) (i), [min ((b) (i) .YLim (1) b2 (i) .YLim(1)])马克斯((b) (i) .YLim (2) b2 (i) .YLim (2)))))
结束
I = 1:数字(d2)
d2(我).Parent = e(我);
d2(我).SeriesIndex = 2;
xlim (e(我),(min ([e (i) .XLim (1) e2 (i) .XLim(1)])马克斯([e (i) .XLim (2) e2 (i) .XLim (2)))))
ylim (e(我),(min ([e (i) .YLim (1) e2 (i) .YLim(1)])马克斯([e (i) .YLim (2) e2 (i) .YLim (2)))))
结束
关上(ftemp)

更多答案(0)

s manbetx 845


释放

R2019b

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!