代码之家  ›  专栏  ›  技术社区  ›  antecessor

在ggplot2中使用ylim时破坏了置信区间区域

  •  0
  • antecessor  · 技术社区  · 7 年前

    我一直在用 ggplot2 很长一段时间,但从未经历过这个问题。我代表一些回归的置信区间。但是,我决定手动控制 ylim() . 我意识到那些超过y极限的区域被破坏了。如图所示:

    enter image description here

    ggplot(dataset, aes(x=variable, y=value, fill=Species, colour=Species, linetype = Species)) + 
      geom_smooth(method="lm", formula= y~poly(x,3), level=0.95, alpha=0.2) + 
      xlab("A") +
      ylab("B") + 
      ylim(0, 30) + 
      theme(axis.text.x = element_text(angle = 0, hjust = 0.5, size = 10),
            panel.background = element_blank(),
            legend.position='bottom',
            panel.grid.major = element_line(colour="azure2"),
            axis.line = element_line(colour = "black", 
                          size = 0.15, linetype = "solid")) +
      scale_x_continuous(breaks=seq(1, 10, 1), limits=c(1, 10)) +
      scale_color_manual(values=c("coral4", "coral1", "darkolivegreen3", "darkgoldenrod4", "darkgoldenrod2", "deepskyblue3", "darkorchid3")) +
      scale_fill_manual(values=c("coral4", "coral1", "darkolivegreen3", "darkgoldenrod4", "darkgoldenrod2", "deepskyblue3", "darkorchid3")) +
      scale_linetype_manual(values=c(1,1,1,3,3,2,2))
    

    我想保持这些y限制。我用过 coord_cartesian 没有成功。有人能帮我吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Richard Telford    7 年前

    coord_cartesian 应该可以,但是你必须移除 ylim()

    一些数据

    set.seed(1)
    df <- data_frame(x = -5:5, y = rnorm(11, x^2, 5))
    

    复制你的问题

    ggplot(df, aes(x, y)) +
    geom_smooth() +
    ylim(-1, NA)
    

    笛卡尔坐标

    ggplot(df, aes(x, y)) +
    geom_smooth() +
    coord_cartesian(ylim = c(-1, 40))
    
    推荐文章