我试图从MATLAB图中获取轴TickValues的位置。例如,我的数字如下:
在将图形保存为图像后,我试图找到轴TickValues的位置[如图所示] [注意:边界框是手工制作的。忽略任何错误]
以下是我目前生成的代码:
h = plot(1:10);
hFrame = getframe(h.Parent.Parent);
hImage = hFrame.cdata;
set(h.Parent,'Units','pixel');
我正试图从hImage
的{{1}}获取position
的x轴TickValues和y轴TickValues的边界框。
如果问题尚不清楚,请告诉我。我会编辑以使其更清晰。
答案 0 :(得分:1)
作为@suever suggested in comments,轴的Position
属性将是最简单的方法:
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: