Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
663 views
in Technique[技术] by (71.8m points)

plot - shading area between two lines in r

For example if i need to shade two area in plot

x<-rep(1:10)
plot(x,type="h")

I need as an example shade the area from 1 to 3 and from 7 to 10,

I use this commands but it omitted the lines of plot.

usr <- par('usr')
rect(1, usr[3], 3, usr[4], col='green')
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If I understand you correctly, you can get what you want by using the little-known panel.first= argument to plot.default():

plot(x,type="h", 
     panel.first = {
         usr <- par('usr')
         rect(c(1,7), usr[3], c(3,10), usr[4], col='green', border=NA)
     })

Or, to avoid any mucking around with par('usr') values, just do:

plot(x, type="h", 
     panel.first = rect(c(1,7), -1e6, c(3,10), 1e6, col='green', border=NA))

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...