Matlab:沿每个轴创建具有相等物理长度的线

时间:2017-02-21 03:58:21

标签: matlab vector-graphics

我想制作带刻度的比例尺,我希望X和Y条上的刻度具有相同的物理长度,无论相对长度,尺寸或"模式"轴(至少在创建刻度时)。我希望daspect()会给我提供我需要的信息,但是对于查询宽高比来说,daspect()似乎无能为力。例如,如果我生成一个Matlab给出XLim为[0 3.5]且YLim为[0 1]的绘图,那么无论我如何在屏幕上显示数字,daspect()都会给出[3.5 1 ...] 。这显然不准确或有帮助。是否有其他功能,或者可能是一种让daspect()在不操纵情节的情况下提供有用信息的方法?

1 个答案:

答案 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;