Cannot set marker edge thickness using the Linewidth property smaller than 1pt

조회 수: 50 (최근 30일)
JK
JK 2018년 10월 27일
댓글: Rupsagar Chatterjee 2023년 9월 7일
I would like to set the edge thickness of markers to some smaller values than 1 (0.5 or 0.3 for example). I currently use Matlab 2018b on a Mac and could not yet figure out why markers always appear with an edge width of 1pt. I attached an example where the lines (when exported to an eps file either via the Matlab export function or the export_fig addon) have the correction thickness but the markers seem to remain at a width of 1pt.
Edit: It seems that the Linewidth property affects the edge thickness of markers for values equal to 1 or above. Setting it to values <1 seems not to work though (only for lines, not the markers).
Thanks a lot
testpoints = line([1 2 3 4 5],[4 5 6 7 8],'LineStyle','none','Linewidth', 0.5,'MarkerEdgeColor','k','MarkerFaceColor','w','Marker','s','MarkerSize',4);
testline = line([1 2 3 4 5],[4 5 6 7 8],'LineStyle','-','Linewidth', 0.5,'Marker','none');
  댓글 수: 3
JK
JK 2018년 10월 27일
I inspected the eps file using Adobe Illustrator and checked the line and marker thickness.
Walter Roberson
Walter Roberson 2023년 5월 2일
편집: Walter Roberson 2023년 5월 2일
According to the documentation,
The line width cannot be thinner than the width of a pixel. If you set the line width to a value that is less than the width of a pixel on your system, the line displays as one pixel wide.
I do not know how this would affect eps; I suspect the plot would get rasterized according to the figure PageSize

댓글을 달려면 로그인하십시오.

답변 (3개)

David Broadway
David Broadway 2020년 3월 27일
I am having the same issue.
One not very good solution is to plot the data twice once with just the edge and another with the face. This seems to get the correct effect but it is not an optimal solution.
hold on
plot(XData, YData, ...
'o', ...
'MarkerSize', 1, ...
'MarkerEdgeColor', [31, 119, 180] / 255;
plot(XData, YData, ...
'o', ...
'MarkerSize', 0.8, ...
'MarkerEdgeColor', 'none', ...
'MarkerFaceColor', [174, 199, 232] / 255);
hold off
  댓글 수: 6
DGM
DGM 2023년 5월 2일
I'm a bit slow today. I see Walter is already working with you here
His solution thus far already includes the concepts that I've covered, so it would probably be best to focus on that thread for now.
Walter Roberson
Walter Roberson 2023년 5월 2일
pzmap() does not allow you to directly change properties; you have to look for the graphic objects.
pzplot() does allow you to pass in some properties, and returns a handle that allows you to directly change other properties without having to search for the objects.

댓글을 달려면 로그인하십시오.


jonas
jonas 2018년 10월 27일
편집: jonas 2018년 10월 27일
After digging through the undocumented properties, here's how you change the marker edge thickness:
LineHandle.NodeChildren.LineWidth = 2
The edgethickness does not automatically scale with markersize, so none of your linespec properties affect the edgethickness.
  댓글 수: 9
jonas
jonas 2018년 10월 28일
편집: jonas 2018년 10월 28일
Yep you are correct, I had not noticed that the edge of the marker scales with linewidth. The only other answer I can find online is related to resolution, which is not the problem here because the axes ruler is 0.5 pts and is exported just fine. Odd.

댓글을 달려면 로그인하십시오.


JK
JK 2018년 11월 1일
Mathworks support has now confirmed that this is a bug and forwarded it to the development team to be fixed in a future release.

카테고리

Help CenterFile Exchange에서 Graphics Performance에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by