【问题标题】:Markers are not Perfect Circles?标记不是完美的圆圈?
【发布时间】:2014-06-20 19:55:28
【问题描述】:

我正在使用 Matlab 进行一些粒子动力学模拟,并将每个粒子定义为一个圆形标记。基本上,每次我更新我的情节时,我都会根据情节比例调整这些标记的大小;我的所有这些的绘图代码可以在下面找到:

%%Initial Plot at time t = 0 Along with Scaling in the Y-Direction
figure;
h=scatter(Pos(1,:),Pos(2,:),6,jet(length(Pos(1,:))),'filled','MarkerEdgeColor','k','linewidth',1);
hold on
axis ([0 dp 0 dp]*L*Scale)
currentunits = get(gca,'Units');
set(gca, 'Units', 'Points');
axpos = get(gca,'Position');
set(gca, 'Units', currentunits);
markerWidth = dp/diff(ylim)*axpos(4); % Calculate Marker width in points
set(h, 'SizeData', markerWidth^2)

这是我遇到的奇怪问题。当我运行我的模拟时,我发现粒子没有按照他们应该的方式排列,根据很多关于这方面的文献。基本上,我最终会在 x 方向上的粒子之间出现间隙(y 方向很好)。
最初,我认为我的排斥力有问题,但我回去重新排列粒子,使它们可以接触(作为初始测试),我注意到 - 尽管参数是正确的 - 绘制的标记没有接触在 x 方向(同样,y 方向很好)。
好像 Matlab 标记不是完美的圆?
是否有人对此有任何其他信息或想法如何解决标记以这种方式表现的事实?

【问题讨论】:

    标签: matlab aspect-ratio


    【解决方案1】:

    在设置轴限制之前,您可以通过调用axis equal 来实现您想要的行为。


    当您将轴 范围 设置为相等的值时,您的 纵横比 可以关闭。因此,圆形标记可能不会接触。这是一个基于您的方法的示例(为简单起见稍作修改):

    figure;
    
    POINTS = [1 1;
              2 1;
              1 2];
    
    h = plot(POINTS(:,1),POINTS(:,2),'o');
    
    %axis equal
    
    dp = 3;
    axis ([0 dp 0 dp])
    
    set(gca, 'Units', 'Points');
    axpos = get(gca,'Position');
    markerWidth = 1/(dp)*axpos(4);
    set(h, 'markersize', markerWidth);
    

    这会产生以下简单的情节:

    我相信,这就是你所经历的。现在,如果您取消注释上面示例中的 axis equal,您将得到以下图:


    您还可以使用daspect 获取当前的纵横比。使用此处的原始示例,您将在不带任何参数的情况下调用 daspect 时获得 [1.5 1.5 1.0]。
    如果你想要一个特定的纵横比,你可以在这样的情节之后调用daspect,例如:

    daspect([2 1 1])
    

    这会给你这个情节:

    请注意,您始终必须为所有三个轴提供一个因子 daspect(即使像这里一样,没有 z 轴)。
    设置daspect([1 1 1])与axis equal相同。

    【讨论】:

    • 哇,非常感谢您的详细解释!当我尝试这个时,它工作得很好,但我想进一步研究它。无论哪种方式,我发现这个与 matlab 相关的属性非常奇怪。我会在明天或周一进行一些与此相关的初步测试后发表评论。
    • 这完美地解决了我的问题(在对我程序的其他区域进行了一些调整之后);非常感谢您的建议和重要信息!
    • @Incognito:不客气。如果您坚持并获得声誉,也许您会及时回来为答案投票;-)
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2017-12-20
    相关资源
    最近更新 更多