在某些情况下,堆积的条形图会创建超出值的条形图。
以下是可再现的示例,显示了该问题:
# creating some dataframe for the example
eg <- matrix(nrow=4, ncol=3)
eg[,1] <- c('a', 'b', 'a', 'b')
eg[,2] <- c('catA', 'catA', 'catB', 'catB')
eg[,3] <- c(0.7, 0.3, 0.8, 0.4)
colnames(eg) <- c('ID', 'type', 'proportion')
eg <- as.data.frame(eg)
# plotting
ggplot (data=eg, aes (x=ID, y=proportion, fill=type)) +
geom_bar(stat='identity')
它应该生成上面的图。例如,在ID a
中,我期望的是蓝色条变为0.8,但粉红色条从0.0变为0.7,而不是笨拙地将其添加到没有值或网格的顶部。我在做什么错了?
答案 0 :(得分:1)
尝试像这样在geom_bar
中添加位置参数:
ggplot (data=eg, aes (x=ID, y=proportion, fill=type)) +
geom_bar(stat='identity', position = position_dodge())
答案 1 :(得分:0)
问题在于比例被强制转换为字符矩阵
eg <- matrix(nrow=4, ncol=3)
eg[,1] <- c('a', 'b', 'a', 'b')
eg[,2] <- c('catA', 'catA', 'catB', 'catB')
# this part is the problem
eg[,3] <- c(0.7, 0.3, 0.8, 0.4)
colnames(eg) <- c('ID', 'type', 'proportion')
eg <- as.data.frame(eg)
str(eg)
给予
“ data.frame”:4磅。 3个变量:
$ ID:具有两个级别“ a”,“ b”的因子:1 2 1 2
$类型:因子有2个级别的“ catA”,“ catB”:1 1 2 2
$的比例:具有4个级别的因数“ 0.3”,“ 0.4”,“ 0.7”,..:3 1 4 2
您需要采用更正格式:
eg <- data.frame(
ID <- c('a', 'b', 'a', 'b'),
type <- c('catA', 'catA', 'catB', 'catB'),
proportion <- c(0.7, 0.3, 0.8, 0.4)
)
ggplot (data=eg, aes (x=ID, y=proportion, fill=type)) +
geom_bar(stat='identity')