隐藏轮廓 属性 某些边缘无法访问 EdgePrims

Hidden contour property EdgePrims inaccessible for some edges

我正在尝试更改 LineJoin MATLAB 等高线图中的某些线。当我修改 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。我怎样才能同时访问中间线的线属性?

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

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

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


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