代码之家  ›  专栏  ›  技术社区  ›  M.Teich

ggplot循环中依赖于大小写的绘图大小缩放

  •  0
  • M.Teich  · 技术社区  · 7 年前

    coord_fixed expand_limits . 不幸的是,不同的绘图的y轴不同,因此缩放设置不适合所有情况,即文本被切断和/或轴被压缩。让我举例说明:

    period <- c(rep("A",4),rep("B",4))
    group <- rep(c("C","C","D","D"),2)
    size <- rep(c("E","F"),4)
    value <- c(23,29,77,62,18,30,54,81)
    df <- data.frame(period,group,size,value)
    
    library(ggplot2)
    
    for (i in levels(df$group)) 
    {
    p <- ggplot(subset(df, group==i), aes(x=size, y=value,  fill = period)) + 
         geom_bar(position="dodge", stat="identity", show.legend=F) +
         geom_text(data=subset(df, group==i), aes(x=size, y=value,label=value),
                   size=10, fontface="bold", position = position_dodge(width=1),vjust = -0.5) +
         expand_limits(y = max(df$value)*0.6) + 
         coord_fixed(ratio = 0.01)
    
    ggsave(paste0("yourfilepath",i,".png"), width=7.72, height=4.5, units="in", p)
    }
    

    坐标固定 扩展\u限制 expand_limits(y = max(df$value * ifelse(df$value <= 50, 0.6, 1))) 但这并不是我所希望的那样。如有任何建议,我们将不胜感激!

    1 回复  |  直到 7 年前
        1
  •  0
  •   M.Teich    7 年前

    根据@Z.Lin的评论,我添加了 df$value[df$group==i] 我的论点 ifelse 功能: expand_limits(y = max(df$value[df$group==i] * ifelse(df$value[df$group==i] <= 50, 5, 8)))

    推荐文章