# Fill light gray color between two horizontal lines in a plot?

75 views (last 30 days)
Abhik Saha on 7 Feb 2023
Commented: Star Strider on 14 Feb 2024
I want to fill light gray color between two horizontal lines such that I can plot the horizontal lines as dashed dotted ? Please help me regarding this issue. I am writing below the code
x=[1:10];
y=[1:10];
figure(1);clf;
plot(x,y,'b')
hold on
plot([1,10],2*[1,1],'--.k')
hold on
plot([1,10],4*[1,1],'--.k')
Levente Gellért on 14 Feb 2024
Dear Community members! How can one solve the same problem in 2017a?
Thanks
lg
Star Strider on 14 Feb 2024
My code should work equally well in R2017a.

Star Strider on 7 Feb 2023
To plot a ‘dash-dot¹ line requires a slightly different LineStyle definition —
x=[1:10];
y=[1:10];
figure(1)
plot(x,y,'b')
hold on
patch([x, flip(x)], [ones(size(x))*2, ones(size(x))*4], [1 1 1]*0.05, 'Edgecolor','none', 'FaceAlpha',0.25)
plot([1,10],2*[1,1],'-.k')
plot([1,10],4*[1,1],'-.k')
hold off
Plotting the patch as dash-dotted is difficult, however it is possible.
.
##### 3 CommentsShow 1 older commentHide 1 older comment
Star Strider on 9 Feb 2023
As always, my pleasure!
Afiq Azaibi on 17 Mar 2023
In addition to Star Strider's solution, starting in R2023a you can use the xregion and yregion functions:
plot(1:10);
yregion(2, 5, 'EdgeColor', 'black');
You can update the LineStyle, FaceAlpha, and other visuals about the object. However, the default EdgeColor is 'none'.

Arif Hoq on 7 Feb 2023
x=[1:10];
y=[1:10];
figure(1);clf;
plot(x,y,'b')
hold on
plot([1,10],2*[1,1],'--.k')
hold on
plot([1,10],4*[1,1],'--.k')
x = [1 10 10 1];
y = [2 2 4 4];
patch(x,y,[.5 .5 .5])
Benjamin Kraus on 7 Feb 2023
Using patch as @Arif Hoq suggested is best, but you may also want to set the FaceAlpha and EdgeColor like this:
x=[1:10];
y=[1:10];
figure(1);clf;
plot(x,y,'b')
hold on
plot([1,10],2*[1,1],'--.k')
hold on
plot([1,10],4*[1,1],'--.k')
x = [1 10 10 1];
y = [2 2 4 4];
patch(x,y,'k','FaceAlpha',0.5,'EdgeColor','none')
xlim([1 10])

Sarvesh Kale on 7 Feb 2023
Hi ,
rectangle("Position",[1 2 10 2],"FaceColor",[150/255 150/255 150/255],"LineStyle","none");
This will shade the required portion with gray color, However I was not able to toggle its visibility so that the underlying slanted straight line is also visible.