我有一个带3轴组件的Matlab GUI。他们的标签是predicted_ax
,cost_ax
和error_ax
。我想在第一轴组件(带有标记predicted_ax
)的特定位置绘制垂直线。我怎么做?如何在Matlab GUI中在轴上绘制垂直线?
我试过这段代码:
ylim = get(handles.predicted_ax, 'ylim');
line([linePos, linePos], ylim);
但它绘制(那些与标签error_ax
)不同轴上行了!我相信我没有混淆标签或轴组件。在事实上另一个测试
ylim = get(handles.cost_ax, 'ylim');
line([linePos, linePos], ylim);
给出完全相同的结果:绘制直线的最后一个组件的轴与标签error_ax
。那么我该如何在右侧的轴上画线?
这是最好的答案。每条线都有一个父轴。如果您不提供带有轴手柄的line()函数,则默认情况下会将该线附加到“当前”轴。这就是为什么轴(handles.predicted_ax)有效。它使predict_ax成为当前坐标轴,因此之后创建的任何行都将其作为默认父项。但是,我觉得只需将该行的“Parent”属性设置为要附加到的轴就会更清晰。一般来说,当您有更清晰的选项可用时,依靠使用当前坐标轴(gca)或当前图(gcf)并不是一个好主意。 – cholland 2012-07-18 23:01:40
作为一个侧面说明。你可以这样做:'line([linePos,linePos],ylim,'Parent',handles.predicted_ax)' – cholland 2012-07-18 23:02:27
@cholland这将是最好的答案,如果它的工作。但事实并非如此。 – drasto 2012-07-19 09:57:24