改变GridSize现有的非空的TiledChartLayout对象

22日视图(30天)
你好所有的,
我有一个问题关于管理tile布局。
我想改变的组织布局 瓷砖已经创建的(例如,添加或删除一个瓦)。
我以为我可以修改GridSize TiledChartLayout对象的属性在得到处理。
然而,当我尝试这种方法,得到:
“无法设置GridSize当TiledChartLayout不空”
因此,目前尚不清楚我怎么应付这种情况。
虚拟的例子:
图;
tl = tiledlayout (1,1);%第一step-just阴谋
nexttile (1);
情节((1 2 3),(4 5 6),“o”);
想象现在,创建图之后,我想添加第二个瓷砖,组织块在2行和列。
我在想我可以做的事:
tl.GridSize = 1 [2];
nexttile (2)
情节((1 2 3)- (4 5 6),“s”);
但它不工作。我得到一个错误当试图改变网格大小(tl.GridSize = (2 - 1))
无法设置GridSize当TiledChartLayout不是空的
如果只是想添加一个新的瓷砖没有试图改变网格大小(即使用直接nexttile(2)),我得到了错误:
错误使用nexttile
瓷砖不适合的布局。
任何建议如何管理呢?
谢谢你!
Gabriele

接受的答案

亚当Danz
亚当Danz 2021年6月7日
如何改变现有tiledlayout的网格布局图?
如果 tiledlayout 生成的 安排然后简单地调用 nexttile 添加新轴。
如果 tiledlayout 是固定的,源代码不可用或无法改变,那么你可以将瓦片复制到一个新的图与你想要的布局。
创建基础图2 x2的布局
无花果=图();
tlo = tiledlayout(图2 2);
i = 1:4
nexttile ()
x = linspace(我*我*π,π);
情节(x, sin (x)。*兰德(大小(x)))
标题(sprintf (“瓦% d ',我)
包含(sprintf (“X % d ',我)
ylabel (sprintf (“Y % d ',我)
结束
linkaxes
图(图)%显示图
瓦片复制到新的图3 x2布局和加1瓦
originalFig 是原始图的图处理。得到处理使用 gcf 或当你打开图使用 openfig ()
originalFig = gcf ();
%得到瓷砖(即轴)处理
ax =翻转(findobj(图,“类型”,“轴”));
%创造新的网格图新瓷砖
newfig =图();
tlo = tiledlayout (newfig、2、3);
%将现有轴从原始图复制到新的图
newax = gobject (tlo.GridSize);
tempax = gobject(大小(ax));
i = 1:元素个数(ax)
tempax (i) = nexttile ();
newax (i) = copyobj (ax (i), newfig);
集(newax(我),“单位”,tempax .Units(我),“位置”,tempax(我).Position)
tempax(我)。可见=“关闭”;
结束
%添加新的瓷砖
nexttile ()
情节(魔法(5),“- - -”)
%这是可选的但是必须添加额外的瓷砖。
删除(tempax)

更多的答案(2)

斯科特·麦肯齐
斯科特·麦肯齐 2021年6月6日
试着用 网格大小……
tiledlayout (“流”);
nexttile;
情节((1 2 3),(4 5 6),“ob”);
暂停(2);
nexttile;
情节([2 1 3],[4 5 6],“是”);
第一个图:
2秒后:
6个评论
亚当Danz
亚当Danz 2021年6月7日
编辑:亚当Danz 2021年6月7日
我希望能够重新定义网格大小太但我不认为缺点是和你一样糟糕。
我不得不重组这样的数字在过去。有解决方法。我将添加一个答案我使用共享的解决方案。

登录置评。


Gabriele
Gabriele 2021年6月7日
感谢亚当建议解决方案。
我不知道如果我丢失的东西,但我的感觉相同的结果可以通过改变每个瓷砖的父母从旧tiledlayout新tiledlayout……
%创建基本图像:
无花果=图();
tlo_original = tiledlayout(图2 2);
i = 1:4
nexttile ()
x = linspace(我*我*π,π);
情节(x, sin (x)。*兰德(大小(x)))
标题(sprintf (“瓦% d ',我)
包含(sprintf (“X % d ',我)
ylabel (sprintf (“Y % d ',我)
结束
linkaxes
图(图)%显示图
%创建一个新的和新的布局图
fig_new =图;
tlo_new = tiledlayout (fig_new 3 2);
ax = findobj(图,“类型”,“轴”);%得到原始轴在旧图的处理
变化百分比父新瓷砖对所有轴布局
ja = 1:元素个数(ax)
斧子(ja) .Parent = tlo_new;
结束
图(fig_new);
%添加新瓷砖——就像你
nexttile ()
情节(魔法(5),“- - -”)
有什么不对供以后使用的新TiledLayout仅仅改变父母财产像我一样?
1评论
亚当Danz
亚当Danz 2021年6月7日
这种方法很好。只是不意外地盖原始图通过储蓄(假定图被打开)。减少发生的可能性,你可以关闭循环或原始图后,更好的是,使用 onCleanup 关闭图在发生一个错误。你甚至可能想打开图在隐形模式下使用 openfig (___可见性)

登录置评。

类别

找到更多的在轴的外观帮助中心文件交换

s manbetx 845


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的