我想创建一个双面图表,其中“目标”变量位于x轴上,“鸟”和“狼”位于y轴的左侧,每个都有自己的比例。
df<- read.table(text = "target birds wolfs
1 0.3 0.5
0 0.9 0.2 ",header = TRUE)
我尝试按照this link中的代码来实现我的目标,但没有成功。我怎样才能克服这个问题?
答案 0 :(得分:2)
你需要对此进行一点重塑,ifelse
有点懒惰:
df2 <- tidyr::gather(df, 'var', 'val', -target)
ggplot(df2, aes(var)) +
geom_col(aes(y = ifelse(target == 0, -val, val), fill = factor(target))) +
coord_flip()
答案 1 :(得分:0)
df<- read.table(text = "target birds wolfs
1 0.3 0.5
0 0.9 0.2 ",header = TRUE)
df[df$target==0,] <- -df[df$target==0,]
df <- tidyr::gather(df,animal,value,c(birds,wolfs))
ggplot(df, aes(x = animal, y = value, fill = target)) +
geom_bar(stat = "identity") +
coord_flip()
试试上面的内容?