Matlab线图:是否可以单独设置标记线宽?

Matlab line plot: is it possible to set marker line width separately?

有没有办法在Matlab绘图中单独设置标记线宽?

如果我们使用'LineWidth',它会改变标记边缘和线条本身的宽度。我们可以在两个单独的 plot 函数中绘制标记和线条,但是,设置图例会有问题。

这似乎是可能的,但没有记录。

Line 对象有一个隐藏的 属性 MarkerHandle,它引用了一个代表绘制标记的 Marker 对象;此对象有自己的 LineWidth 属性。绘制标记后,Marker 对象的 LineWidth 属性 独立于主 Line 上的 LineWidth 属性 影响标记线宽目的。这使您可以:

hLine = plot(myData, 'Marker',myMarkerType, 'LineWidth',myMainLineWidth);
drawnow;
hLine.MarkerHandle.LineWidth = myMarkerLineWidth;

但是 属性 似乎不会 影响该行在图例中的条目。不过,这也可以通过未记录的属性访问。

hLegend = legend;
drawnow;
lineEntry = findobj(hLegend.EntryContainer, 'Object',hLine);
entryMarker = findobj(lineEntry.Icon.Transform, 'Description','Icon Marker');
entryMarker.LineWidth = myMarkerLineWidth;

这在 MATLAB R2018b 中对我有用,但由于没有记录,因此不能保证结果会完全符合您的预期。特别是,您可能需要注意您的手动更改是否会被您使用记录的功能对您的绘图所做的其他更新自动覆盖,这会导致重新绘制标记。