Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
在MATLAB图形中查找轴值的位置_Matlab_Matlab Figure_Matlab Guide_Handle - Fatal编程技术网

在MATLAB图形中查找轴值的位置

在MATLAB图形中查找轴值的位置,matlab,matlab-figure,matlab-guide,handle,Matlab,Matlab Figure,Matlab Guide,Handle,我试图从MATLAB图形中获取轴值的位置。例如,我有一个如下图形: 在将图形保存为图像(如图所示)后,我尝试查找轴值的位置。[注意:边界框是手工制作的。忽略任何错误] 以下是我到目前为止生成的代码: h = plot(1:10); hFrame = getframe(h.Parent.Parent); hImage = hFrame.cdata; set(h.Parent,'Units','pixel'); 我正试图从h.Parent的位置获取h.Parent上hImage上x轴tickV

我试图从MATLAB图形中获取轴值的位置。例如,我有一个如下图形:

在将图形保存为图像(如图所示)后,我尝试查找轴值的位置。[注意:边界框是手工制作的。忽略任何错误]

以下是我到目前为止生成的代码:

h = plot(1:10);
hFrame = getframe(h.Parent.Parent);
hImage = hFrame.cdata;
set(h.Parent,'Units','pixel');
我正试图从h.Parent的
位置
获取h.Parent上
hImage
上x轴tickValue和y轴tickValue的边界框

如果问题还不清楚,请告诉我。我将进行编辑以使其更清晰。

作为@suever,轴的
位置
属性将是实现这一点的最简单方法:

h = plot(1:10);
pos = h.Parent.Position; % get the axes position
m = 3; % width and hight multiplyer
xth = h.Parent.XAxis.TickLength(2); % get x-axis tick hight
dimx = [pos(1)-xth pos(2)-xth*m pos(3)+xth*2 xth*m];
annotation('rectangle',dimx,'color','r') % for demonstration
yth = h.Parent.YAxis.TickLength(2); % get y-axis tick hight
dimy = [pos(1)-yth*(m-1) pos(2)-yth yth*(m-1) pos(4)+yth*2];
annotation('rectangle',dimy,'color','r') % for demonstration
演示:

您可以更改
m
,以确保所有刻度值都在边界框内


编辑:

备选案文2:

备选案文3:


你到底想完成什么?这似乎是一种非常迂回的方法,我正在尝试从句柄获取的图像中提取这些区域(需要以像素为单位),因为我们知道图像通常以像素为单位。这些提取的区域将来将用于其他目的。从图像中提取图形句柄信息是关键。我不明白这是怎么一种迂回的方法。为什么不使用
getframe(h.Parent)
只保存不包含标签的部分呢?如果您只想知道
轴的位置,可能不需要保存到图像。就用h.Parent.Position来理解吧。我想你当时还不明白这个问题。我试图从图形手柄本身获取每个轴的位置;不是图像。从图形句柄获得的位置将如上图所示放置在图像中。但是,您在该位置上有一个点吗?图像中的位置包括x轴和y轴以及图形。我想将它们分开。这就是问题所在。这是一个很好但不安静的优雅解决方案。这是一种解决方法。如果我们看一下你的案子,就会发现有重叠。如果我把乘数改为1,它实际上在tickValues@user7410580我看不出它们怎么会重叠?你能画这个吗?可能是我在重叠部分错了;但我一直在寻找一种解决方案,其中有一个区域专门分配给轴值。@user7410580我添加了更多选项,让您看看它们是否符合您的意思,但对于方法来说,这非常简单,因为您只需设置一次,它将始终绑定轴。我不认为有一个像你所说的定义区域不仅仅是相对于轴放置记号和标签。是的,他们没有轴记号值的定义区域。但是对于标题,它们有一个.范围,相对于内部区域给出一个矩形区域。