把y轴放在右边。

时间:2021-07-03 08:17:28

Let's say I want to plot my data:

假设我想绘制我的数据

my.df <- data.frame(mean = c(0.045729661,0.030416531,0.043202944,0.025600973,0.040526913,0.046167044,0.029352414,0.021477789,0.027580529,0.017614864,0.020324659,0.027547972,0.0268722,0.030804717,0.021502093,0.008342398,0.02295506,0.022386184,0.030849534,0.017291356,0.030957321,0.01871551,0.016945678,0.014143042,0.026686185,0.020877973,0.028612298,0.013227244,0.010710895,0.024460647,0.03704981,0.019832982,0.031858501,0.022194059,0.030575241,0.024632496,0.040815748,0.025595652,0.023839083,0.026474704,0.033000706,0.044125751,0.02714219,0.025724641,0.020767752,0.026480009,0.016794441,0.00709195), std.dev = c(0.007455271,0.006120299,0.008243454,0.005552582,0.006871527,0.008920899,0.007137174,0.00582671,0.007439398,0.005265133,0.006180637,0.008312494,0.006628951,0.005956211,0.008532386,0.00613411,0.005741645,0.005876588,0.006640122,0.005339993,0.008842722,0.006246828,0.005532832,0.005594483,0.007268493,0.006634795,0.008287031,0.00588119,0.004479003,0.006333063,0.00803285,0.006226441,0.009681048,0.006457784,0.006045368,0.006293256,0.008062195,0.00857954,0.008160441,0.006830088,0.008095485,0.006665062,0.007437581,0.008599525,0.008242957,0.006379928,0.007168385,0.004643819), parent.origin = c("paternal","paternal","paternal","paternal","paternal","paternal","maternal","maternal","maternal","maternal","maternal","maternal","paternal","paternal","paternal","paternal","paternal","paternal","maternal","maternal","maternal","maternal","maternal","maternal","maternal","maternal","maternal","maternal","maternal","maternal","paternal","paternal","paternal","paternal","paternal","paternal","maternal","maternal","maternal","maternal","maternal","maternal","paternal","paternal","paternal","paternal","paternal","paternal"), group = c("F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:M","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1r:F","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:M","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F","F1i:F"), replicate = c(1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6))

As follows:

如下:

library(ggplot2)

p1 <- ggplot(data = my.df, aes(factor(replicate), color = factor(parent.origin)))
p1 <- p1 + geom_boxplot(aes(fill = factor(parent.origin),lower = mean - std.dev, upper = mean + std.dev, middle = mean, ymin = mean - 3*std.dev, ymax = mean + 3*std.dev), position = position_dodge(width = 0), width = 0.5, alpha = 0.5, stat="identity") + facet_wrap(~group, ncol = 4)+scale_fill_manual(values = c("red","blue"),labels = c("maternal","paternal"),name = "parental allele")+scale_colour_manual(values = c("red","blue"),labels = c("maternal","paternal"),name = "parental allele")
p1 <- p1 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_rect(fill = 'white', colour = 'white'), legend.position = "none")+theme(strip.background=element_rect(fill="white"))

This gives:

这给:

把y轴放在右边。

My question is how can I move the y-axis to be on the right side of the plot? I've seen several posts about it from the past but they seem rather hacky so I was wondering whether anyone knows of a new implementation that makes it easier.

我的问题是如何将y轴移到图的右边?我以前见过几篇关于它的文章,但它们似乎相当陈腐,所以我想知道是否有人知道有一种新的实现可以使它更容易实现。

3 个解决方案

#1


3  

There's still no easy way to do it. There's an issue/feature request open on GitHub, but since moving to ggplot 1.0 and focusing on ggvis, it probably won't be taken care of any time soon. The answers in this question, or this example seem to be the only way to do it for now (and forever, probably).

仍然没有简单的方法。GitHub上打开了一个问题/特性请求,但是由于转向了ggplot 1.0并关注了ggvis,它可能不会很快得到解决。这个问题的答案,或者这个例子,似乎是现在(可能也是永远)做这件事的唯一方法。

#2


16  

With ggplot versions above 2.2.0, this should work:

在2.2.0以上的ggplot版本中,这应该可以工作:

scale_y_continuous(position = "right")

#3


4  

The "cowplot" package with "ggdraw" function can help, as described there: https://cran.r-project.org/web/packages/cowplot/vignettes/axis_position.html

带有“ggdraw”函数的“cowplot”包可以提供帮助,如下所示:https://cran.r-project.org/web/packages/cowplot/vignettes/axis_position.html

ggdraw(switch_axis_position(p1 + theme_gray(), axis = 'y'))

#1


3  

There's still no easy way to do it. There's an issue/feature request open on GitHub, but since moving to ggplot 1.0 and focusing on ggvis, it probably won't be taken care of any time soon. The answers in this question, or this example seem to be the only way to do it for now (and forever, probably).

仍然没有简单的方法。GitHub上打开了一个问题/特性请求,但是由于转向了ggplot 1.0并关注了ggvis,它可能不会很快得到解决。这个问题的答案,或者这个例子,似乎是现在(可能也是永远)做这件事的唯一方法。

#2


16  

With ggplot versions above 2.2.0, this should work:

在2.2.0以上的ggplot版本中,这应该可以工作:

scale_y_continuous(position = "right")

#3


4  

The "cowplot" package with "ggdraw" function can help, as described there: https://cran.r-project.org/web/packages/cowplot/vignettes/axis_position.html

带有“ggdraw”函数的“cowplot”包可以提供帮助,如下所示:https://cran.r-project.org/web/packages/cowplot/vignettes/axis_position.html

ggdraw(switch_axis_position(p1 + theme_gray(), axis = 'y'))