代码之家  ›  专栏  ›  技术社区  ›  Ab Bennett

创建一个2 x 2的偶数段的正方形R图形

  •  1
  • Ab Bennett  · 技术社区  · 6 年前

    我试图创建一个2 x 2正方形的绘图,上面有数字

    基本上是一个2x2的+vs网格-

    下面是我想要的,除了上面的方块高度不一样。任何帮助都将不胜感激,我看不出这是怎么回事。

    谢谢

    df <- data.frame(matrix(ncol = 5, nrow = 0))
    colnames(df) <- c("x", "y", "color","w","perc")
    
    df[nrow(df) + 1,] = c("+","+","orange",1,77)
    df[nrow(df) + 1,] = c("+","-","green",1,17)
    df[nrow(df) + 1,] = c("-","+","red",1,27)
    df[nrow(df) + 1,] = c("-","-","orange",1,37)
    
    ggplot(df, aes(x = x, y = y, fill = color, label = perc)) +
      geom_bar(stat = "identity", width=1.0) +
      geom_text(size = 3, position = position_stack(vjust = 0.5)) +
      scale_fill_identity() + 
      theme(axis.text.x = element_text(angle = 45, hjust = 1))
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Z.Lin    6 年前

    听起来你在找 geom_tile() geom_bar() .

    顺便说一句,您可能希望按列而不是按行创建数据帧,因为前者允许您更好地控制每列的类。

    # create data frame
    df <- data.frame(
      x = c("+", "+", "-", "-"),
      y = c("+", "-", "+", "-"),
      color = c("orange", "green", "red", "orange"),
      w = rep(1, 4),
      perc = c(77, 17, 27, 37),
      stringsAsFactors = FALSE
    )
    
    # plot
    ggplot(df, aes(x = x, y = y, fill = color, label = perc)) +
      geom_tile() +
      geom_text(size = 3) +
      scale_fill_identity() + 
      theme(axis.text.x = element_text(angle = 45, hjust = 1))
    

    plot