MATLAB Answers

4

How do I change the marker size for a plot?

Asked by john birt on 30 Apr 2011
Latest activity Commented on by Wo Mazdas on 23 Jul 2019 at 6:09
Im trying to set the marker size on a plot but having no luck, heres my code
this works fine
plot(
x , x^2,'-k*',...
x , x^3,'-ko',...
x , x^4,'-k' )
but when i try and set marker size it does not
plot(
x , x^2,'-k*',...
x , x^3,'-ko','MarkerSize',12,...
x , x^4,'-k' )
what do I need to do?

  0 Comments

Sign in to comment.

4 Answers

Answer by Oleg Komarov on 30 Apr 2011
Edited by MathWorks Support Team on 8 Nov 2018
 Accepted Answer

You can change the marker size for a line plot by setting the “MarkerSize” property, either as a name-value pair or by accessing the “Line” object.
Name-value pair:
If you set this property as a name-value pair with the “plot” function, you must set it after all the x,y pairs. Name-value pair settings apply to all the plotted lines. To use a different marker size for each line, use separate “plot” commands. For example:
plot(x,x^2,'-k*', 'MarkerSize',20)
hold on
plot(x,x^3,'-ko','MarkerSize',12)
plot(x,x^4,'-k' )
hold off
Accessing the “Line” object:
Alternatively, return the “Line” objects as an output argument from the “plot” function and then set the “MarkerSize” property for each object separately.
p = plot(x,x^2,'-k*', x,x^3,'-ko', x,x^4,'-k' )
p(1).MarkerSize = 20;
p(2).MarkerSize = 12;

  1 Comment

Wo Mazdas on 23 Jul 2019 at 6:09
Wonderful, just what I was looking for.

Sign in to comment.


Answer by Jan
on 30 Apr 2011

plot(x, x^2,'-k*');
hold('on');
plot(x, x^3,'-ko','MarkerSize', 12);
plot(x, x^4,'-k');

  2 Comments

For some obscure reason, MarkerSize is not consistently used. When you use scatter, you need to set 'SizeData' instead of 'MarkerSize'. Also, the scale of SizeData is different from that of MarkerSize' E.g.,
h = scatter(rand,rand,'b','filled'); set(h,'SizeData',96);
The difference is subtle, but intentional. It stems from the different use cases.
MarkerSize is used to control the overall size of markers, just like the overall width of a line with LineWidth or font size. The units are in points, just like LineWidth.
Scatter is used to actually scale the marker sizes based on data. Specifically, the area of the marker is proportional to the value. This is why the units are in points squared.

Sign in to comment.


Answer by Login_Name
on 30 Apr 2011

To make this type of thing much easier, you could download this code so that all these options are available from a simple mouse click:

  3 Comments

You can also enable a context menu for changing line and marker properties just by enabling plot edit mode. Click on the button in the Figure toolbar with an arrow on it, then right click on your line.

Sign in to comment.


Answer by Hari Desanur on 15 Nov 2016

The Marker Size property for a particular line can be set using line object handles. For example -
l = plot(x1,y1,'*-',x2,y2,'*-');
l(1).MarkerSize = 8; % set marker size of 8 for the first line (x1,y1)
l(2).MarkerSize = 12;

  1 Comment

P_L
on 18 Apr 2019
Hi there and what if you wanted to chnage the colours of 'ko' data points so that they are filled for example with 'b'
Many thanks

Sign in to comment.