matlab 强制轴在打印前初始化

qyzbxkaa  于 2023-10-23  发布在  Matlab
关注(0)|答案(1)|浏览(165)

我试图使用this solution删除边框,而pause不起作用。

plot([1 2])
ax = gca;
ax.XRuler.Axle.LineStyle = 'none';

抛出

Property assignment is not allowed when the object is empty.
Use subscripted assignment to create an array element.

在这里,pause可以工作,但在我的上下文中(大型tiledlayout),让我们假设[*]它不工作。将最后一行替换为ax.XRuler.Axle

0×0 empty GraphicsPlaceholder array.

随着停顿,

LineStrip

我假设错误消息建议subsasgn,我已经尝试过了,但它是两个.访问。我在任何地方都找不到LineStrip对象。
这种情况有什么诀窍吗?或者更好的解决方案(我可以重新命名这个问题)?我们的目标是简单地让边框消失,而不禁用xlabelylabel
[*] pause(.01)由于某种原因大大降低了所有速度,也跳过了一些瓷砖(故意),尽管我想我可以用另一种减速来破解这一部分

efzxgjgh

efzxgjgh1#

问题似乎是在图形引擎可以创建绘图之前执行了ax=gca命令,因为图形引擎与脚本的执行是异步调用的。
如果您的问题是等效的plot命令在处理轴之前花费的时间太长,一个可能的解决方案是强制创建一个轴(非常快),然后在调整它之后在该轴上绘图。

axes
drawnow % you still need this, but should not slow anything down, as the axes call should be very fast
ax = gca;
ax.XRuler.Axle.LineStyle = 'none';
plot([1 2])

对于tiledlayout

figobj = tiledlayout(2, 3);
for i=1:prod(figobj.GridSize)
    nexttile
end
drawnow
% do plotting ...

相关问题