【问题标题】:Place y-axis on the right将y轴放在右侧
【发布时间】:2023-03-30 06:55:02
【问题描述】:

假设我想绘制我的数据:

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))

如下:

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"))

这给出了:

我的问题是如何将 y 轴移动到绘图的右侧?我从过去看过几篇关于它的帖子,但它们看起来很老套,所以我想知道是否有人知道有一个新的实现可以让它变得更容易。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    对于 2.2.0 以上的 ggplot 版本,这应该可以工作:

    scale_y_continuous(position = "right")
    

    【讨论】:

    • 你能用 labs() 或 theme() 得到同样的结果吗?
    • 2021 年也想知道这一点。
    【解决方案2】:

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

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

    【讨论】:

    • 这听起来很棒!然而,它不适用于平面图:“只能在只有一个面板的图上切换轴。”你知道刻面的技巧吗?
    • @Thales West。我也设置了方面,但是我现在切换到使用 gridExtra 包中的 grid.arrange() 安排我的情节,它对我来说效果很好
    【解决方案3】:

    仍然没有简单的方法来做到这一点。有一个issue/feature request open on GitHub,但自从转移到 ggplot 1.0 并专注于ggvis,它可能不会很快得到处理。 answers in this questionthis example 似乎是目前(并且可能是永远)的唯一方法。

    【讨论】:

    • 您可以在ggvis ala add_axis("y", title = "Yo", orient = "right") 中执行此操作当然它看起来还没有实现geom_boxplot:ggvis.rstudio.com/layers.html
    猜你喜欢
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    相关资源
    最近更新 更多