【发布时间】: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
我应该如何开始。
【问题讨论】:
我想在堆积条形图中绘制我的数据。 我的数据是这样的
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
我应该如何开始。
【问题讨论】:
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")
【讨论】:
[.data.frame(df, !is.na(df$value)) 中的错误:选择了未定义的列”
, 逗号。
除了@Sathish 的回答。
下面是使用tidyr和ggplot2的答案
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")
【讨论】: