如何使用ggplot2创建双面图表

时间:2017-02-08 09:56:23

标签: r ggplot2

我想创建一个双面图表,其中“目标”变量位于x轴上,“鸟”和“狼”位于y轴的左侧,每个都有自己的比例。

df<- read.table(text = "target birds    wolfs     
                              1     0.3      0.5 
                              0     0.9      0.2  ",header = TRUE)

我尝试按照this link中的代码来实现我的目标,但没有成功。我怎样才能克服这个问题?

更新:附件是草图 enter image description here

2 个答案:

答案 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()

enter image description here

答案 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()

试试上面的内容?