多列

时间:2017-12-13 20:36:17

标签: r ggplot2

我设法将我的初始数据集转换为这种形式:

   ElemId total_count coef_true coef_false coef_ratio
 1  a1           2         2          0          1
 2  a2           4         4          0          1
 3  a3           1         1          0          1
 4  a4           5         5          0          1
 5  a5           1         1          5          1
 6  a6           4         4          0          1
 7  a7           4         4          3          1
 8  a8           2         2          2          1
 9  a9           3         3          1          1
10  a10           1         1          4          1

现在我想要实现的是绘制堆积条形图,使用ggplot,显示单个条上的coef_true和coef_false,同时通过coef_ratio 保留顺序。有没有办法在不进一步转换数据集的情况下完成?

编辑。修改数据没问题,虽然我尝试使用melt(valves, measure.vars=c("init_true", "init_false"))融合,但条形图似乎松散了coef_ratio的排序。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望将ElemId上的coef值绘制为ElemId重新排序的coef_ratio。如果是这种情况,您可以执行以下操作:

library(tidyverse)

df %>% 
  gather(key, value, -c(coef_ratio, ElemId, total_count)) %>% 
  ggplot(aes(reorder(ElemId, coef_ratio), value)) +
  geom_col(aes(fill = key)) +
  labs(x = "ElemId reordered by coef_ratio")

enter image description here

我修改了数据,以便ElemId a10的{​​{1}}为0,以显示x轴的重新排序。

coef_ratio