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:
There are still two problems: The overlapping labels for the bottom-right density axis, and a tiny bit of misalignment between the left side of the graphs on the left. I think that the dot in the labels for the density pushes the plot a tiny bit to the right compared with the 2D plot. Any ideas?
Here's the code (strongly based on the afore-linked post on Learning R):
p <- colour="cyl)<br" data="mtcars," geom="point" hp="" mpg="" qplot=""> p1 <- br="" legend.position="none" opts="" p=""> p2 <- aes="" colour="cyl))<br" ggplot="" group="cyl," mtcars="" x="mpg,">p2 <- br="" fill="NA," p2="" position="dodge" stat_density="">p2 <- axis.title.x="theme_blank()," br="" legend.position="none" opts="" p2=""> axis.text.x=theme_blank()) p3 <- aes="" colour="cyl))<br" ggplot="" group="cyl," mtcars="" x="hp,">p3 <- br="" coord_flip="" fill="NA," p3="" position="dodge" stat_density="">p3 <- axis.title.y="theme_blank()," br="" legend.position="none" opts="" p3=""> axis.text.y=theme_blank()) legend <- br="" keep="legend_box" opts="" p=""> ## Plot Layout Setup Layout <- grid.layout="" ncol="2,<br" nrow="2,"> widths = unit (c(2,1), c("null", "null")), heights = unit (c(1,2), c("null", "null")) ) vplayout <- br="" function=""> grid.newpage() pushViewport(viewport(layout= Layout)) } subplot <- function="" layout.pos.col="y)<br" layout.pos.row="x," viewport="" x="" 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)) ->->->->->->->->->->->->
No comments:
Post a Comment