[R] radial.plot shaded region

David Winsemius dwinsemius at comcast.net
Wed Dec 11 02:39:40 CET 2013


On Dec 10, 2013, at 4:24 PM, Jim Lemon wrote:

> On 12/11/2013 10:33 AM, Hodge, Steven wrote:
>> I'm working with radial.plot in the plotrix package.
>> 
>> Is there a way to show a shaded region for a specific range of values in radial.lim?
>> 
>> For example:
>> # test data from radial.plot{plotrix}
>> testlen<-c(sin(seq(0,1.98*pi,length=100))+2+rnorm(100)/10)
>> testpos<-seq(0,1.98*pi,length=100)
>> 
>> # the original plot
>> radial.plot(testlen,testpos,rp.type="p",main="Test Polygon",line.col="blue")
>> 
>> # my attempt to shade the region between 3 and 3.5:
>> radial.plot(
>> 	matrix(c(3.5, 3), byrow = TRUE),
>> 	matrix(c(testpos, testpos), byrow = TRUE, nrow = 2),
>> 	rp.type="p",
>> 	main="Test Polygon",
>> 	poly.col = c('light blue', 'white'),
>> 	radial.lim = c(0, 3.5)
>> 	)
>> # In effect, draw a polygon at 3.5 filled with light blue, then another at 3 filled with white.
>> # Now overplot the values of interest:
>> radial.plot(testlen,testpos,rp.type="p",main="Test Polygon",line.col="blue", radial.lim = c(0, 3.5), add = TRUE)
>> 
>> Is there an easier way? How can I re-draw the grid lines that are in the original plot?
>> 
> Hi Steve,
> That is a tricky one. The best I can do at the moment is to suggest the following be added:
> 
> radial.grid(radial.lim=c(0,3.5),
> grid.pos=seq(0,3.5,length.out=8))
> radial.plot(testlen,testpos,rp.type="p",
> main="",line.col="blue",add=TRUE)
> 
> There may be a solution using the radial.pie function, and if I find it, I'll post it.

Looking at the code I would have thought it would not be too difficult to "de-couple" the plot setup and the grid plotting in this section:

if (!add) {
        par(mar = mar, pty = "s")
        plot(c(-maxlength, maxlength), c(-maxlength, maxlength), 
            type = "n", axes = FALSE, main = main, xlab = xlab, 
            ylab = ylab)
        if (show.grid) {
            for (i in seq(length(grid.pos), 1, by = -1)) {
                xpos <- cos(angles) * (grid.pos[i] - radial.lim[1])
                ypos <- sin(angles) * (grid.pos[i] - radial.lim[1])
                polygon(xpos, ypos, border = grid.col, col = grid.bg)
            }
        }

But you are the Plotmeister and I am a humble Student.

-- 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list