如何绘制以下表格的分组条形图

时间:2017-04-24 14:14:59

标签: r

我有一个

形式的数据框
|group|label1|label2|...|
|-----|------|------|---|
|groupname|value|value|...|
|groupname|value|value|...|

我想要做的是绘制一个标准图,其中label1,label2等位于x轴上,y轴是值(介于0和1之间的频率),groupname字段用作barplot的组ID。我不知道该怎么做。我需要重塑这些数据才能实现这一目标吗?

编辑:我已经在R-studio中包含了数据的快照,以防我对数据框看起来的解释不清楚。

Data snapshot

1 个答案:

答案 0 :(得分:1)

确实,您需要先重新组合数据(我使用了tidyr包中的函数)。

以下是我使用的一些数据(下次你应该提供一些示例数据,这极大地帮助我们回答你的问题!)

require(ggplot2)
require(tidyr)

dat <- data.frame(
  "id" = c("g1", "g2", "g3"),
  "AA" = runif(3),
  "AB" = runif(3))

dat_new <- dat %>% 
  gather(key = "labels", value = "value", AA:AB)

注意:我不确定你想要的情节,但这里有两个可能性。这些都是你想要的吗?

第一个情节

如果你想要分面:

ggplot(dat_new, aes(x = labels, y = value)) +
  geom_col(width = 0.2) + 
  facet_grid(id ~ .)

enter image description here

第二个情节

如果您想按颜色分组:

ggplot(dat_new, aes(x = labels, y = value, fill = id)) +
  geom_col(position = "dodge") 

enter image description here