【问题标题】:Hidden contour property EdgePrims inaccessible for some edges某些边缘无法访问隐藏的轮廓属性 EdgePrims
【发布时间】:2021-07-23 18:17:42
【问题描述】:

我正在尝试为 MATLAB 等高线图中的某些线更改 LineJoin。当我修改EdgePrims时,只有“部分行”受到影响:

num_incs = 3;
x = linspace(-1,1,num_incs);
[Xa,Ya] = meshgrid(x,x);
Z = abs(Xa) + abs(Ya);

[C,hContour] = contour(Xa,Ya,Z,20,'LineWidth',4);

drawnow;
set(hContour.EdgePrims, 'LineStyle', 'dotted')
set(hContour.EdgePrims, 'LineJoin', 'miter')
drawnow;

产生以下内容:

也就是说,我只在外边缘设置LineStyleLineJoin。如何也可以访问中间线的线属性?

【问题讨论】:

  • 可能是因为它们是封闭的多边形,它们现在存储在FacePrims 中?我有一个不这样做的旧版本的 MATLAB,它们都是EdgePrims
  • 2020b,FacePrims 是空的。您使用的是哪个版本的 MATLAB?
  • 我有 R2017a。我应该升级这些天之一。 :) 无论如何,这是一个猜测。必须有一些其他隐藏的属性来存储封闭的多边形。

标签: matlab matlab-figure


【解决方案1】:

轮廓对象 (matlab.graphics.chart.primitive.Contour) 有一个新的隐藏属性:EdgeLoopPrims。这个包含形成闭合循环的所有边缘的句柄。 EdgePrims 现在只包含未形成闭环的行的句柄。

set(hContour.EdgePrims, 'LineStyle', 'dotted')
set(hContour.EdgeLoopPrims, 'LineStyle', 'dotted')

与未记录的属性一样,这一定会在某个时候发生变化。使用它会将您的代码使用限制为特定版本的 MATLAB。我用 R2021a 对此进行了测试。


要探索隐藏的属性,只需将图形句柄转换为结构:struct(hContour)

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多