How do I plot lines with different line widths?

1 414 views (last 30 days)
Hi, I want to do: plot(x1,y1,x2,y2,'LineWidth',8) but the linewidth propery ends up applying to both lines. Do I have to use two plot functions with a hold on command to have line1 a different width than line2? Thanks.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 29 Aug 2023
Edited: MathWorks Support Team on 13 Nov 2024
To plot two lines with different line widths, you can use either of these approaches. 1. Return the two “Line” objects as an output argument from the “plot” function and then set the “LineWidth” property for each. p = plot(x1,y1,x2,y2) p(1).LineWidth = 5; p(2).LineWidth = 10; 2. Use the “hold on” command to plot the two lines separately. Specify the line width by setting the “LineWidth” property a name-value pair. plot(x1,y1,'LineWidth',5) hold on plot(x2,y2,'LineWidth',10) hold off
  2 Comments
Mike Garrity
Mike Garrity on 8 Mar 2016
Just FYI, there is an "official" syntax for setting a property to different values on different objects. However, it's really ugly, and doesn't work everywhere. For example, I don't think that the plot function accepts this form.
It looks like this:
h = plot(x1,y1,x2,y2);
set(h,{'LineWidth'},{5;10})
The property name and property value need to each be a cell array, and the shape of the value cell array has to match the shape of the handle cell array.
That said, you're really better off with 2 calls to set in this case.

Sign in to comment.

More Answers (4)

Wayne King
Wayne King on 22 Sep 2011
Hi: You can use handles.
h = plot(x1,y1,x2,y2);
set(h(1),'linewidth',1);
set(h(2),'linewidth',2);

Hari Desanur
Hari Desanur on 15 Nov 2016
Edited: Hari Desanur on 15 Nov 2016
The line width for a particular line can be set using line object handles. For example -
l = plot(x1,y1,x2,y2);
l(1).LineWidth = 3; % set line width of 3 for the first line (x1,y1)
l(2).LineWidth = 6;

SHAILENDRA PANDEY
SHAILENDRA PANDEY on 11 Oct 2020
x = 1:.01:10;
y1 = sin(x);
y2 = cos(x);
p = plot(x,y1,x,y2)
set(p,{'LineWidth'},{5;10})
Line width, specified as a positive value in points, where 1 point = 1/72 of an inch. If the line has markers, then the line width also affects the marker edges.
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.

Auwalu
Auwalu on 16 Feb 2026 at 13:25
Edited: Walter Roberson on 16 Feb 2026 at 20:09
%% Auwal 2026 Research Model - Analytical Solutions
% Extended Raptis (1982) with Soret and Dufour Effects
% Vertical channel flow with double-diffusive convection
clear all; close all; clc;
%% Parameters (User can modify these)
lambda = 1; % Flow parameter
Pr = 0.71; % Prandtl number (air: 0.71, water: 7)
Sc = 0.6; % Schmidt number
e = 1; % Rotation/MHD parameter
Gr = 100; % Thermal Grashof number
Gm = 50; % Solutal Grashof number
A = 1; % Thermal BC parameter at z=0
B = 1; % Thermal BC parameter at z=0
gamma = 1; % Temperature gradient parameter
H = 1; % Channel height
Sr = 0.1; % Soret number (small)
Df = 0.1; % Dufour number (small)
epsilon = 1; % Perturbation parameter (Sr = ε*S1, Df = ε*D1)
S1 = Sr/epsilon; % Scaled Soret coefficient
D1 = Df/epsilon; % Scaled Dufour coefficient
% Spatial grid
Nz = 100;
z = linspace(0, H, Nz)';
%% BASE SOLUTIONS (Zeroth Order - Raptis 1982)
fprintf('Computing base solutions (Raptis 1982)...\n');
Computing base solutions (Raptis 1982)...
% Temperature base solution
Delta = B*(1 - exp(-lambda*Pr*H)) - A*lambda*Pr;
a0 = -gamma*exp(-lambda*Pr*H)/Delta;
a1 = gamma/Delta;
theta0 = a0 + a1*exp(-lambda*Pr*z);
% Concentration base solution
b0 = -exp(-lambda*Sc*H)/(1 - exp(-lambda*Sc*H));
b1 = 1/(1 - exp(-lambda*Sc*H));
C0 = b0 + b1*exp(-lambda*Sc*z);
% Velocity base solution
% Characteristic roots for homogeneous solution
m1 = (-lambda + sqrt(lambda^2 + 8i*e))/2;
m2 = (-lambda - sqrt(lambda^2 + 8i*e))/2;
% Particular solution coefficients for Q0
P0 = (Gr*a0 + Gm*b0)/(2i*e);
P1 = -Gr*a1/(lambda^2*Pr*(Pr-1) - 2i*e);
P2 = -Gm*b1/(lambda^2*Sc*(Sc-1) - 2i*e);
% Boundary conditions for Q0
Q0_at_0 = P0 + P1 + P2;
Q0_at_H = P0 + P1*exp(-lambda*Pr*H) + P2*exp(-lambda*Sc*H);
% Solve for homogeneous coefficients G1, G2
A_mat = [1, 1; exp(m1*H), exp(m2*H)];
b_vec = [-Q0_at_0; -Q0_at_H];
G_coeff = A_mat\b_vec;
G1 = G_coeff(1);
G2 = G_coeff(2);
% Complete Q0 solution
Q0 = G1*exp(m1*z) + G2*exp(m2*z) + P0 + P1*exp(-lambda*Pr*z) + P2*exp(-lambda*Sc*z);
%% FIRST-ORDER CORRECTIONS (Soret & Dufour Effects)
fprintf('Computing first-order corrections (Soret & Dufour)...\n');
Computing first-order corrections (Soret & Dufour)...
% Check for resonance case (Pr = Sc)
if abs(Pr - Sc) < 1e-10
fprintf('Warning: Pr = Sc (resonance case). Using resonant solution.\n');
% Resonant temperature correction (Pr = Sc)
P_res = -D1*lambda*Pr*b1;
% Solve for K1, K2 from BCs
A_mat_theta = [B, B - A*lambda*Pr; ...
1, exp(-lambda*Pr*H)];
b_vec_theta = [A*lambda*Pr*P_res; -P_res*H*exp(-lambda*Pr*H)];
K_coeff = A_mat_theta\b_vec_theta;
K1 = K_coeff(1);
K2 = K_coeff(2);
theta1 = K1 + K2*exp(-lambda*Pr*z) + P_res*z.*exp(-lambda*Pr*z);
% Resonant concentration correction (Pr = Sc)
Q_res = S1*lambda*Pr*a1;
% Solve for L1, L2 from BCs
A_mat_C = [1, 1; 1, exp(-lambda*Pr*H)];
b_vec_C = [Q_res*0; -Q_res*H*exp(-lambda*Pr*H)];
L_coeff = A_mat_C\b_vec_C;
L1 = L_coeff(1);
L2 = L_coeff(2);
C1 = L1 + L2*exp(-lambda*Pr*z) + Q_res*z.*exp(-lambda*Pr*z);
else
% Non-resonant case (Pr ≠ Sc)
% Temperature correction coefficients
M = D1*Sc*b1/(Sc - Pr);
Delta_C = B*(1 - exp(-lambda*Sc*H)) - A*lambda*Sc;
K2 = -M*Delta_C/Delta;
K1 = M*(Delta_C*exp(-lambda*Pr*H)/Delta - exp(-lambda*Sc*H));
theta1 = K1 + K2*exp(-lambda*Pr*z) + M*exp(-lambda*Sc*z);
% Concentration correction coefficients
N = -S1*Pr*a1/(Sc - Pr);
L2 = -N*(1 - exp(-lambda*Pr*H))/(1 - exp(-lambda*Sc*H));
L1 = N*(exp(-lambda*Sc*H) - exp(-lambda*Pr*H))/(1 - exp(-lambda*Sc*H));
C1 = L1 + L2*exp(-lambda*Sc*z) + N*exp(-lambda*Pr*z);
end
% Velocity correction
R0 = (Gr*K1 + Gm*L1)/(2i*e);
R1 = (-Gr*K2 - Gm*N)/(lambda^2*Pr*(Pr-1) - 2i*e);
R2 = (-Gr*M - Gm*L2)/(lambda^2*Sc*(Sc-1) - 2i*e);
% Boundary conditions for Q1
Q1_at_0 = R0 + R1 + R2;
Q1_at_H = R0 + R1*exp(-lambda*Pr*H) + R2*exp(-lambda*Sc*H);
% Solve for homogeneous coefficients H1, H2
H_coeff = A_mat\[-Q1_at_0; -Q1_at_H];
H1 = H_coeff(1);
H2 = H_coeff(2);
% Complete Q1 solution
Q1 = H1*exp(m1*z) + H2*exp(m2*z) + R0 + R1*exp(-lambda*Pr*z) + R2*exp(-lambda*Sc*z);
%% COMPLETE SOLUTIONS (to first order)
fprintf('Assembling complete solutions...\n');
Assembling complete solutions...
theta = theta0 + epsilon*theta1;
C = C0 + epsilon*C1;
Q = Q0 + epsilon*Q1;
% Extract real and imaginary parts of velocity
U = real(Q); % Velocity component in x-direction
V = imag(Q); % Velocity component in y-direction
%% PLOTTING RESULTS
fprintf('Generating plots...\n');
Generating plots...
figure('Position', [100, 100, 1200, 800]);
% Temperature profile
subplot(2, 3, 1);
plot(theta, z, 'b-', 'LineWidth', 2);
hold on;
plot(theta0, z, 'r--', 'LineWidth', 1.5);
xlabel('\theta(z)', 'FontSize', 12);
ylabel('z', 'FontSize', 12);
title('Temperature Profile', 'FontSize', 14);
legend('With Soret/Dufour', 'Base (Raptis 1982)', 'Location', 'best');
grid on;
% Concentration profile
subplot(2, 3, 2);
plot(C, z, 'b-', 'LineWidth', 2);
hold on;
plot(C0, z, 'r--', 'LineWidth', 1.5);
xlabel('C(z)', 'FontSize', 12);
ylabel('z', 'FontSize', 12);
title('Concentration Profile', 'FontSize', 14);
legend('With Soret/Dufour', 'Base (Raptis 1982)', 'Location', 'best');
grid on;
% Velocity magnitude
subplot(2, 3, 3);
plot(abs(Q), z, 'b-', 'LineWidth', 2);
hold on;
plot(abs(Q0), z, 'r--', 'LineWidth', 1.5);
xlabel('|Q(z)|', 'FontSize', 12);
ylabel('z', 'FontSize', 12);
title('Velocity Magnitude', 'FontSize', 14);
legend('With Soret/Dufour', 'Base (Raptis 1982)', 'Location', 'best');
grid on;
% Velocity components
subplot(2, 3, 4);
plot(U, z, 'b-', 'LineWidth', 2);
hold on;
plot(V, z, 'r-', 'LineWidth', 2);
xlabel('Velocity Components', 'FontSize', 12);
ylabel('z', 'FontSize', 12);
title('Velocity Components', 'FontSize', 14);
legend('U (real part)', 'V (imaginary part)', 'Location', 'best');
grid on;
% Cross-diffusion effects
subplot(2, 3, 5);
plot(epsilon*theta1, z, 'g-', 'LineWidth', 2);
hold on;
plot(epsilon*C1, z, 'm-', 'LineWidth', 2);
xlabel('Correction Magnitude', 'FontSize', 12);
ylabel('z', 'FontSize', 12);
title('Cross-Diffusion Corrections', 'FontSize', 14);
legend('Dufour effect on \theta', 'Soret effect on C', 'Location', 'best');
grid on;
% Velocity vector plot in channel
subplot(2, 3, 6);
% Create mesh for vector plot
z_vec = linspace(0, H, 20);
x_vec = linspace(-0.5, 0.5, 20);
[X, Z] = meshgrid(x_vec, z_vec);
% Interpolate velocity components
U_interp = interp1(z, U, Z, 'spline');
V_interp = interp1(z, V, Z, 'spline') * 0.1; % Scale for visualization
quiver(X, Z, U_interp, V_interp, 1.5, 'b', 'LineWidth', 1);
xlabel('x (cross-channel)', 'FontSize', 12);
ylabel('z (vertical)', 'FontSize', 12);
title('Velocity Field in Channel', 'FontSize', 14);
axis equal tight;
grid on;
sgtitle('Auwal 2026: Extended Raptis Model with Soret & Dufour Effects', ...
'FontSize', 16, 'FontWeight', 'bold');
%% OUTPUT SUMMARY
fprintf('\n=== SOLUTION SUMMARY ===\n');
=== SOLUTION SUMMARY ===
fprintf('Parameters:\n');
Parameters:
fprintf(' λ = %.2f, Pr = %.2f, Sc = %.2f\n', lambda, Pr, Sc);
λ = 1.00, Pr = 0.71, Sc = 0.60
fprintf(' Gr = %.2f, Gm = %.2f, e = %.2f\n', Gr, Gm, e);
Gr = 100.00, Gm = 50.00, e = 1.00
fprintf(' Sr = %.3f, Df = %.3f, ε = %.2f\n', Sr, Df, epsilon);
Sr = 0.100, Df = 0.100, ε = 1.00
fprintf(' Channel height H = %.2f\n', H);
Channel height H = 1.00
fprintf('\nSolution Characteristics:\n');
Solution Characteristics:
fprintf(' Max temperature: θ_max = %.4f at z = %.3f\n', max(theta), z(find(theta==max(theta),1)));
Max temperature: θ_max = 0.0000 at z = 1.000
fprintf(' Max concentration: C_max = %.4f at z = %.3f\n', max(C), z(find(C==max(C),1)));
Max concentration: C_max = 1.0000 at z = 0.000
fprintf(' Max velocity: |Q|_max = %.4f at z = %.3f\n', max(abs(Q)), z(find(abs(Q)==max(abs(Q)),1)));
Max velocity: |Q|_max = 11.0248 at z = 0.374
fprintf(' Cross-diffusion effects:\n');
Cross-diffusion effects:
fprintf(' Dufour correction: max = %.4f, RMS = %.4f\n', max(abs(epsilon*theta1)), rms(epsilon*theta1));
Dufour correction: max = 0.0919, RMS = 0.0528
fprintf(' Soret correction: max = %.4f, RMS = %.4f\n', max(abs(epsilon*C1)), rms(epsilon*C1));
Soret correction: max = 0.0220, RMS = 0.0159
%% SAVING RESULTS
save('auwal_2026_results.mat', 'z', 'theta', 'C', 'Q', 'U', 'V', ...
'theta0', 'C0', 'Q0', 'theta1', 'C1', 'Q1', ...
'lambda', 'Pr', 'Sc', 'Gr', 'Gm', 'e', 'Sr', 'Df', 'epsilon');
%% FUNCTION FOR PARAMETER SENSITIVITY ANALYSIS (Optional)
function analyze_parameter_sensitivity()
% This function can be used to study the effect of different parameters
% Uncomment and modify as needed
% Example: Study effect of Sr and Df
Sr_range = linspace(0, 0.2, 10);
Df_range = linspace(0, 0.2, 10);
[Sr_grid, Df_grid] = meshgrid(Sr_range, Df_range);
Q_max = zeros(size(Sr_grid));
for i = 1:numel(Sr_grid)
% Recompute with different Sr, Df
% (You would need to modify the main code to accept parameters)
% Q_max(i) = max_velocity_for_parameters(Sr_grid(i), Df_grid(i));
end
% Plot sensitivity
figure;
contourf(Sr_grid, Df_grid, Q_max, 20);
colorbar;
xlabel('Soret number Sr');
ylabel('Dufour number Df');
title('Maximum Velocity vs. Cross-Diffusion Parameters');
end
  1 Comment
Walter Roberson
Walter Roberson on 16 Feb 2026 at 20:11
This is certainly not a minimal working example.
It is not clear to me that the difference between line width 1, line width 1.5, and line width 2 will be obvious to viewers here in MATLAB Answers.

Sign in to comment.

Categories

Find more on Labels and Styling in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!