change the lines' widths in a stem plot, without changing the markers edges widths?

15 views (last 30 days)
Sim
Sim on 21 Oct 2020
Edited: Adam Danz on 21 Oct 2020
Hi, how can I change the lines' widths in a stem plot, without changing the markers edges' widths?
(I just want to modifiy the lines's widths and not the markers edges' thickness, either)
Example:
x = 1:10;
y = [2 5 4 1 2 4 1 8 1 2];
stem(x,y,'LineWidth',0.1,'MarkerSize',15,'MarkerFaceColor','g')
and I get this:
Instead if I change the LineWidth property as:
stem(x,y,'LineWidth',3,'MarkerSize',15,'MarkerFaceColor','g')
I get this:

Accepted Answer

Ameer Hamza
Ameer Hamza on 21 Oct 2020
Edited: Ameer Hamza on 21 Oct 2020
You will need to use a combination of stem and scatter to get such a result. Check the following code
x = 1:10;
y = rand(1,10);
subplot(3,1,1)
stem(x,y,'LineWidth',2,'MarkerSize',15,'MarkerFaceColor','g')
subplot(3,1,2)
stem(x,y,'LineWidth',2,'MarkerSize',15,'MarkerFaceColor','g', 'MarkerEdgeColor', 'none')
subplot(3,1,3)
hold on
stem(x, y, 'LineWidth', 2, 'Marker', 'none')
scatter(x, y, 'filled', 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'g', 'SizeData', 200, 'LineWidth', 0.5)

More Answers (2)

Adam Danz
Adam Danz on 21 Oct 2020
Edited: Adam Danz on 21 Oct 2020
Method 1: Set markers separately
x = 1:10;
y = [2 5 4 1 2 4 1 8 1 2];
figure()
stem(x,y,'b-','LineWidth',3,'Marker','none')
hold on
plot(x,y,'bo','MarkerSize',15,'MarkerFaceColor','g')
Method 2: Remove edges from marker
figure()
stem(x,y,'b-','LineWidth',3,'MarkerSize',15,'MarkerFaceColor','g','MarkerEdgeColor','none')

Chenguang Yan
Chenguang Yan on 21 Oct 2020
You can change the value of h2.SizeData to adapt to h1.LineWidth
close all
x = 1:10;
y = [2 5 4 1 2 4 1 8 1 2];
h1 = stem(x,y,'LineWidth',3,'MarkerSize',15,'MarkerFaceColor','g','MarkerEdgeColor','g');
hold on
h2 = scatter(x,y,'LineWidth',0.1,"SizeData",300,"MarkerEdgeColor",'#0072BD');

Community Treasure Hunt

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

Start Hunting!