I have seen that the only package that easily rotate the plot is ggplot, so I ran: ``` library(ggplot2) df = data.frame(MR = c(negative_mr, uncertain_mr, positive_mr), FCN = c(negative_fcn, uncertain_fcn, positive_fcn)) p <- ggplot(df, aes(x=MR)) + geom_density() p + coord_flip() ``` Even in this case, the plot is correctly rotated, but I can't place it in the allocated panel. ggplot2 simply overwrites the whole plot. This means I need to do the whole thing in ggplot2 (would lattice have an equivalent?) and split the plot into uneven panels with ggplot2. Changing x into y is a clever approach, but it is not the same as rotating a plot. But YES, that is exactly what I wanted to plot. Thank you!
On Wed, Oct 13, 2021 at 1:17 AM Bert Gunter <bgunter.4...@gmail.com> wrote: > > I don't know the gridGraphics package, and I haven't looked closely at what > you are trying to do. But note that lattice functions construct grid "grobs" > that can be saved and plotted in arbitrary, including rotated, viewports, > using the print.trellis function. I frankly am pretty ignorant about such > things, but this simple little example might give you some notion of how to > proceed. You may also be able to do what you want with grid.layout() and > pushing a suitably rotated viewport onto a layout. Others would have to > advise on such details, if so. > > If I'm wrong and this is useless, just ignore without comment. > > > > dp <- densityplot(~y, main = "", > xlab = "", ylab = "") > grid.newpage() > pushViewport( > viewport(width = unit(.5,"npc"), > height = unit(.3,"npc"), > angle = 270)) > print(dp, newp = FALSE, ## this is the print.trellis method > panel.width = list(1,"npc"), > panel.height = list(1, "npc") > ) > > Bert Gunter > > "The trouble with having an open mind is that people keep coming along and > sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > On Tue, Oct 12, 2021 at 1:43 PM Luigi Marongiu <marongiu.lu...@gmail.com> > wrote: >> >> 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 >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. -- Best regards, Luigi ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.