[This article was first published on bioCS, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
I have two 2D distributions and want to show on a 2D plot how they are related, but I also want to show the histograms (actually, density plots in this case) for each dimension. Thanks to ggplot2 and a Learning R post, I have sort of managed to do what I want to have:Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Here’s the code (strongly based on the afore-linked post on Learning R):
p <- qplot(data = mtcars, mpg, hp, geom = "point", colour = cyl) p1 <- p + opts(legend.position = "none") p2 <- ggplot(mtcars, aes(x=mpg, group=cyl, colour=cyl)) p2 <- p2 + stat_density(fill = NA, position="dodge") p2 <- p2 + opts(legend.position = "none", axis.title.x=theme_blank(), axis.text.x=theme_blank()) p3 <- ggplot(mtcars, aes(x=hp, group=cyl, colour=cyl)) p3 <- p3 + stat_density(fill = NA, position="dodge") + coord_flip() p3 <- p3 + opts(legend.position = "none", axis.title.y=theme_blank(), axis.text.y=theme_blank()) legend <- p + opts(keep= "legend_box") ## Plot Layout Setup Layout <- grid.layout( nrow = 2, ncol = 2, widths = unit (c(2,1), c("null", "null")), heights = unit (c(1,2), c("null", "null")) ) vplayout <- function (...) { grid.newpage() pushViewport(viewport(layout= Layout)) } subplot <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y) # Plotting vplayout() print(p1, vp=subplot(2,1)) print(p2, vp=subplot(1,1)) print(p3, vp=subplot(2,2)) print(legend, vp=subplot(1,2))
To leave a comment for the author, please follow the link and comment on their blog: bioCS.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.