指定部分自动限制时查找实际绘图限制
Find actual plot limits when specifying partially automatic limits
如何在此处找到实际的 y 范围:
这只是文档中的示例 http://www.mathworks.com/help/matlab/ref/axis.html
x = linspace(-10,10,200);
y = sin(4*x)./exp(.1*x);
plot(x,y)
axis([-10 10 0 inf])
ymin 值指定为零,最大值自动保留。如果我现在用
查询范围
get(gca,'YLim')
我刚刚得到 [ 0 inf ]
。我如何确定实际使用的绘图 y 范围(对于此示例,它约为 [0 2.5]
..)
编辑 - 搁置
以防其他人遇到此问题 - 最好避免此问题:使用全自动范围制作绘图,然后根据需要修复范围,以便您确切知道它是什么,例如。
plot(x,y)
origYrange=ylim
origXrange=xlim
axis([origXrange 0 origYrange(2)])
虽然文档没有说明,但似乎当 ylim
的第一个(第二个)值设置为 -inf
(inf
) 时,Matlab 设置了较低的(较高的) ) y 轴限制作为图中所有 y 值的最小值(最大值)。后者通过读取轴的所有'children'
的'YData'
属性就可以知道
yd = get(get(gca,'children'),'YData'); %// get y data of all plots
if iscell(yd) %// if there's more than one plot yd is a cell array of numeric vectors;
%// otherwise it's a numeric vector
yd = [yd{:}]; %// combine all values into a single numeric vector
end
ydminmax = [min(yd) max(yd)]; %// computed limits
result = ylim;
ind = isinf(result);
result(ind) = ydminmax(ind); %// replace infinite values by computed values
在你的例子中,结果是
result =
0 2.4313
如何在此处找到实际的 y 范围:
这只是文档中的示例 http://www.mathworks.com/help/matlab/ref/axis.html
x = linspace(-10,10,200);
y = sin(4*x)./exp(.1*x);
plot(x,y)
axis([-10 10 0 inf])
ymin 值指定为零,最大值自动保留。如果我现在用
查询范围 get(gca,'YLim')
我刚刚得到 [ 0 inf ]
。我如何确定实际使用的绘图 y 范围(对于此示例,它约为 [0 2.5]
..)
编辑 - 搁置
以防其他人遇到此问题 - 最好避免此问题:使用全自动范围制作绘图,然后根据需要修复范围,以便您确切知道它是什么,例如。
plot(x,y)
origYrange=ylim
origXrange=xlim
axis([origXrange 0 origYrange(2)])
虽然文档没有说明,但似乎当 ylim
的第一个(第二个)值设置为 -inf
(inf
) 时,Matlab 设置了较低的(较高的) ) y 轴限制作为图中所有 y 值的最小值(最大值)。后者通过读取轴的所有'children'
的'YData'
属性就可以知道
yd = get(get(gca,'children'),'YData'); %// get y data of all plots
if iscell(yd) %// if there's more than one plot yd is a cell array of numeric vectors;
%// otherwise it's a numeric vector
yd = [yd{:}]; %// combine all values into a single numeric vector
end
ydminmax = [min(yd) max(yd)]; %// computed limits
result = ylim;
ind = isinf(result);
result(ind) = ydminmax(ind); %// replace infinite values by computed values
在你的例子中,结果是
result =
0 2.4313