[R] How to rotate only one panel by 90 degrees in R plot?

Luigi Marongiu m@rong|u@|u|g| @end|ng |rom gm@||@com
Tue Oct 12 22:42:26 CEST 2021


Hello,
I would like to show a density plot of the Y axis. To do that, I would
like to split the plot into a panel 2/3 long and a density plot 1/3
long. The problem is that, since the density is on the Y axis, the
density plot should be rotated byb90 degrees. I tried with the package
gridGraphics but it rotates both panels.
```
negative_y <- runif(50, 0, 0.099)
negative_x <- runif(50, 1, 40)
positive_y <- c(runif(30, 0.2, 0.5), runif(20, 0.4, 0.5))
positive_x <- c(runif(30, 25, 40), runif(20, 10, 25))
uncertain_y <- runif(10, 0.099, 0.2)
uncertain_x <- runif(10, 2, 40)
# plot on MR/FCN space
layout(matrix(c(1,2),nrow=1), widths=c(3,1)) # split panels unevenly
plot(negative_x, negative_y, ylim=c(0,0.5), xlim=c(0,41), cex=1.5,
xlab=expression(bold("X")),
ylab=expression(bold("Y")))
points(positive_x, positive_y, pch=16, cex=1.5)
points(uncertain_x, uncertain_y, pch=16, cex=1.5, col="grey")
legend("topleft",
legend = c("Positives", "Negatives", "Uncertains"),
pch = c(16, 1, 16), col=c("black", "black", "grey"), cex=0.8)
# plot density
plot(density(c(negative_y, uncertain_y, positive_y)),
yaxt="n", xaxt="n", main=NA, ylab=NA, xlab=NA)
library(gridGraphics)
grab_grob <- function(){
grid.echo()
grid.grab()
}
g <- grab_grob()
grid.newpage()
pushViewport(viewport(width=0.7,angle=270))
grid.draw(g)
```
How can I rotate only the second panel? I tried to assign the second
plot to an object p and then call grid.draw(p), or to assign g to the
second plot, but they did not work...
Thanks


-- 
Best regards,
Luigi



More information about the R-help mailing list