【问题标题】:Stacked bar chart in ggplot2ggplot2中的堆积条形图
【发布时间】:2017-03-22 04:06:00
【问题描述】:

我想在堆积条形图中绘制我的数据。 我的数据是这样的

ID,A,B,C
D11,2,2,4
D170,2,0,6
D171,1,5,2
D1,5,0,2
D27,NA,NA,NA
D295,0,6,2

我应该如何开始。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:
    library('ggplot2')
    library('reshape2')
    df <- reshape2::melt(df, id.vars = 'ID')  # melt data with ID column
    df <- df[!is.na(df$value), ]              # remove NA
    ggplot( data = df, aes( x = ID, y = value )) +   
      geom_bar( aes( fill = variable ), stat = 'identity' )
    

    数据:

    df <- structure(list(ID = c("D11", "D170", "D171", "D1", "D27", "D295"),
                         A = c(2L, 2L, 1L, 5L, NA, 0L), 
                         B = c(2L, 0L, 5L, 0L, NA, 6L),
                         C = c(4L, 6L, 2L, 2L, NA, 2L)), 
                    .Names = c("ID", "A", "B", "C"),
                    row.names = c(NA, -6L), class = "data.frame")
    

    【讨论】:

    • 删除 NA 步骤时出现错误“[.data.frame(df, !is.na(df$value)) 中的错误:选择了未定义的列”
    • 使用, 逗号。
    【解决方案2】:

    除了@Sathish 的回答。 下面是使用tidyrggplot2的答案

    df <- read.table(text = c("
    ID  A   B   C
    D11 2   2   4
    D170    2   0   6
    D171    1   5   2
    D1  5   0   2
    D27 NA  NA  NA
    D295    0   6   2"), header = T)
    
    library(tidyr)
    library(ggplot2)
    
    df %>% tidyr::gather("var", "value", 2:4) %>% 
      ggplot(., aes(x = ID, y = value))+geom_bar(aes(fill = var ), stat ="identity")
    

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多