Change LineWidth with each loop

7 次查看(过去 30 天)
Bharat Joshi
Bharat Joshi 2020-2-26
I have a code that computes different values for variable "component" in each iteration of a for loop and then plots this variable in subplot(3,1,1). With each click/button press I get a new curve added to subplot(3,1,1). I want the last curve that was plotted to stand out by having a thicker LineWidth.
clear all
fs = 10000;
t = 0 : 1/fs : 1;
component = 0;
sig = 0;
N = 10; %Number of iterations
for i = 1:N
f(i) = 2^(i-1);
waitforbuttonpress %button press or click
component = (100/i)*sin(2*pi*f(i)*t); %variable computed with each iteration
sig = component + sig; %ignore this variable
subplot(3,1,1)
plot(t, component, 'color', rand(1,3), 'LineWidth', 2) %variable "component" is plotted with LineWidth = 2
hold on
subplot(3,1,2) %ignore this plot
plot(t,sig, 'LineWidth', 2) %ignore this plot
end
close
clear all
For example, if I already have 4 curves on subplot(3,1,1), each having LineWidth = 0.5 and I press a button, the 5th curve must be added with LineWidth = 2. With the next button press, the 5th curve must change to LineWidth = 0.5 (same as the curves that came before it) and the 6th curve must have LineWidth = 2. This way the most recent curve will stand out.
Any ideas?

回答(1 个)

Steven Lord
Steven Lord 2020-2-26
Store the handles to the lines (or find the handles to the lines each time with findobj or findall).
set the LineWidth for all the existing lines to 0.5. [For most of the lines this will be a no-op, but that's okay.]
Finally create the new line with LineWidth 2.

类别

Help CenterFile Exchange 中查找有关 Labels and Annotations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by