我想制作带刻度的比例尺,我希望X和Y条上的刻度具有相同的物理长度,无论相对长度,尺寸或"模式"轴(至少在创建刻度时)。我希望daspect()会给我提供我需要的信息,但是对于查询宽高比来说,daspect()似乎无能为力。例如,如果我生成一个Matlab给出XLim为[0 3.5]且YLim为[0 1]的绘图,那么无论我如何在屏幕上显示数字,daspect()都会给出[3.5 1 ...] 。这显然不准确或有帮助。是否有其他功能,或者可能是一种让daspect()在不操纵情节的情况下提供有用信息的方法?
答案 0 :(得分:0)
daspect()在典型的情节中返回垃圾。这是因为拉伸到填充功能会使绘图变形以填充图形空间,从而使DataAspectRatio中的值不准确。关于拉伸到填充的说明可以在here找到。
我还找到了一种解决方法,如果你想要伸展到适合,这是暂时将PlotBoxAspectRatioMode设置为'手册,'它具有更改DataAspectRatio值以匹配屏幕上的内容的效果。
figure;plot(0.1:0.1:pi,sin(0.1:0.1:pi))
pbaspect manual
val = daspect
pbaspect auto
如果你想要一个通常有用的脚本(例如,如果PlotBoxAspectRatioMode已经手动并且你不想改变它),那么更安全的方法是:
pbaspectMode = get(gca,'PlotBoxAspectRatioMode');
pbaspect manual;
val = daspect;
set(gca,'PlotBoxAspectRatioMode',pbaspectMode);
然而,我不确定这是否会产生任何间歇或有害的副作用。
根据Mathworks的支持:
将bpaspect设置为手动然后返回的技术可能是"安全" (虽然如果有副作用我不会感到惊讶),但更好的方法是划分:
real_daspect = daspect./pbaspect;