I have line and want to colour the area behind the line (beyond the x axis) how can I do this

3 views (last 30 days)
I have a line in the format y= mx+c, and I want to shade/colour the area 'behind' the line depending on the direction of my line. I can only see functions that shade/colour the axis from line to x axis. Is there a way of doing what I am describing
  6 Comments

Sign in to comment.

Answers (1)

Star Strider
Star Strider on 23 Nov 2023
Edited: Star Strider on 23 Nov 2023
I am not completely certain what ‘behind’ the line means, however from your comments with respect to the x-axis, I guess that you mean fro the y-axis to the line.
If so, try this —
x = linspace(0, 10).';
m = randn
m = -0.8135
c = randn
c = 0.4800
y = m*x + c;
figure
plot(x, y)
hold on
patch([x; zeros(size(x))], [y; flip(y)], 'r', 'FaceAlpha',0.5, 'EdgeColor','none')
hold off
m = randn
m = 1.6675
c = randn
c = -0.4378
y = m*x + c;
figure
plot(x, y)
hold on
patch([x; zeros(size(x))], [y; flip(y)], 'r', 'FaceAlpha',0.5, 'EdgeColor','none')
hold off
Please clarify if you intend something else.
EDIT — (23 Nov 2023 at 15:27)
Added second plot with different parameters.
EDIT — (23 Nov 2023 at 17:25)
Added ‘Entire Underneath the Line’ and ‘Entire Above the Line’ in the following code sections —
x = linspace(0, 10).';
m = randn
m = -0.0184
c = randn
c = 0.8392
y = m*x + c;
figure
plot(x, y)
hold on
patch([x; flip(x)], [y; zeros(size(y))+min(ylim)], 'g', 'FaceAlpha',0.5, 'EdgeColor','none')
hold off
title(sprintf('Entire Underneath the Line\ny = %.3f*x %+.3f', m,c))
m = randn
m = 1.4742
c = randn
c = -1.7464
y = m*x + c;
figure
plot(x, y)
hold on
patch([x; flip(x)], [y; zeros(size(y))+max(ylim)], 'g', 'FaceAlpha',0.5, 'EdgeColor','none')
hold off
title(sprintf('Entire Above the Line\ny = %.3f*x %+.3f', m,c))
.

Community Treasure Hunt

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

Start Hunting!