Линейный график Matlab: возможно ли отдельно установить ширину линии маркера? - PullRequest
0 голосов
/ 05 марта 2019

Есть ли способ установить ширину линии маркера отдельно на графике Matlab?

Если мы используем 'LineWidth', это изменит ширину как края маркера, так исама линия.Мы можем нанести маркер и линию на две отдельные функции plot, однако при установке легенды возникнет проблема.

1 Ответ

0 голосов
/ 05 марта 2019

Это представляется возможным, но оно недокументировано.

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, но, поскольку это не задокументировано, нет никаких гарантий, что результат будет вести себя точно так, как вы ожидаете.В частности, вам может понадобиться следить за тем, чтобы изменения, вносимые вами вручную, автоматически перезаписывались другими обновлениями, которые вы вносите в свой график с использованием документированных функций, которые приводят к перерисовке маркеров.

...