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.

Reply via email to