Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MatlabGUI中绘制轴上的垂直线?_Matlab_User Interface_Drawing_Matlab Guide_Axes - Fatal编程技术网

如何在MatlabGUI中绘制轴上的垂直线?

如何在MatlabGUI中绘制轴上的垂直线?,matlab,user-interface,drawing,matlab-guide,axes,Matlab,User Interface,Drawing,Matlab Guide,Axes,我有一个3轴组件的MatlabGUI。它们的标签是预测值、成本值和错误值。我想在第一个轴组件上的特定位置绘制垂直线,即带有标记的组件。我该怎么做 我尝试了以下代码: ylim = get(handles.predicted_ax, 'ylim'); line([linePos, linePos], ylim); 但是它在不同的轴上画出了一条线——标记错误的轴!我确信我没有混淆标记或轴组件。事实上,这是另一个考验 ylim = get(handles.cost_ax, 'ylim'); line

我有一个3轴组件的MatlabGUI。它们的标签是预测值、成本值和错误值。我想在第一个轴组件上的特定位置绘制垂直线,即带有标记的组件。我该怎么做

我尝试了以下代码:

ylim = get(handles.predicted_ax, 'ylim');
line([linePos, linePos], ylim);
但是它在不同的轴上画出了一条线——标记错误的轴!我确信我没有混淆标记或轴组件。事实上,这是另一个考验

ylim = get(handles.cost_ax, 'ylim');
line([linePos, linePos], ylim);

给出完全相同的结果:在最后一个轴组件上绘制带有标记错误的线。那么如何在右轴上绘制线呢?

我认为您需要使用axes命令来设置绘制线的当前轴。试试斧柄;在命令行之前


获取轴的ylim值显然不会使其成为当前轴。

我认为您需要使用axis命令来设置绘制线的当前轴。试试斧柄;在命令行之前


获取轴的ylim值显然不会使其成为当前轴。

您需要设置线的“父”属性,因为默认情况下,它将始终是当前轴:

h = line([linePos, linePos], ylim);
set(h, 'parent', handles.predicted_ax);

您需要设置线的“父”属性,因为默认情况下,它将始终是当前轴:

h = line([linePos, linePos], ylim);
set(h, 'parent', handles.predicted_ax);

这是最好的答案。每条线都有一个父轴。如果不为“线”功能提供轴控制柄,默认情况下,它会将线附加到当前轴。这就是axeshandles.uax工作的原因。它使当前轴成为当前轴,因此以后创建的任何线都将将其作为默认父轴。但是,我觉得只将线的“父”属性设置为要将其附着到的轴要清楚得多。一般来说,当您有更清晰的选项可用时,依靠当前轴gca或当前图形gcf从来都不是一个好主意。作为旁注。您可以像这样在一个调用中完成此操作:line[linePos,linePos],ylim,'Parent',handles.predicted_ax@cholland如果它有效的话,这将是最好的答案。但是它不起作用,但是如果我按照你的建议去做的话,它确实起作用——在一次调用中创建行并设置父项。他的想法基本上是正确的,我应该说这个想法是正确的。他唯一缺少的就是手柄部分。这就是他的意思:h=line[linePos,linePos],ylim;seth,'parent',handles.predicted_ax;这是最好的答案。每条线都有一个父轴。如果不为“线”功能提供轴控制柄,默认情况下,它会将线附加到当前轴。这就是axeshandles.uax工作的原因。它使当前轴成为当前轴,因此以后创建的任何线都将将其作为默认父轴。但是,我觉得只将线的“父”属性设置为要将其附着到的轴要清楚得多。一般来说,当您有更清晰的选项可用时,依靠当前轴gca或当前图形gcf从来都不是一个好主意。作为旁注。您可以像这样在一个调用中完成此操作:line[linePos,linePos],ylim,'Parent',handles.predicted_ax@cholland如果它有效的话,这将是最好的答案。但是它不起作用,但是如果我按照你的建议去做的话,它确实起作用——在一次调用中创建行并设置父项。他的想法基本上是正确的,我应该说这个想法是正确的。他唯一缺少的就是手柄部分。这就是他的意思:h=line[linePos,linePos],ylim;seth,'parent',handles.predicted_ax;