Это представляется возможным, но оно недокументировано.
Line
объекты имеют скрытое свойство MarkerHandle
, которое ссылается на объект Marker
, представляющий нарисованные маркеры;этот объект имеет собственное свойство LineWidth
.После отрисовки маркеров свойство LineWidth
объекта Marker
влияет на ширину линии маркера независимо от свойства LineWidth
основного объекта Line
.Это позволяет вам:
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, но, поскольку это не задокументировано, нет никаких гарантий, что результат будет вести себя точно так, как вы ожидаете.В частности, вам может понадобиться следить за тем, чтобы изменения, вносимые вами вручную, автоматически перезаписывались другими обновлениями, которые вы вносите в свой график с использованием документированных функций, которые приводят к перерисовке маркеров.