我想绘制此数据表的值:
require(data.table)
dt1 <- structure(list(Group = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L,
4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L,
2L, 3L, 4L, 5L, 6L), Counts = c(105L, 6098L, 31L, 388L, 325L,
85L, 105L, 6098L, 31L, 388L, 325L, 85L, 105L, 6098L, 31L, 388L,
325L, 85L, 105L, 6098L, 31L, 388L, 325L, 85L, 105L, 6098L, 31L,
388L, 325L, 85L), variable = c("A", "A", "A", "A", "A", "A",
"I", "I", "I", "I", "I", "I", "R", "R", "R", "R", "R", "R", "T",
"T", "T", "T", "T", "T", "W", "W", "W", "W", "W", "W"), value = c(0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0)), .Names = c("Group", "Counts", "variable","value"), class = c("data.table", "data.frame"))
> head(dt1, 10)
Group Counts variable value
1: 1 105 A 0
2: 2 6098 A 0
3: 3 31 A 0
4: 4 388 A 0
5: 5 325 A 1
6: 6 85 A 1
7: 1 105 I 1
8: 2 6098 I 0
9: 3 31 I 0
10: 4 388 I 0
数据结构如下:我有30个组(在示例数据6中),并且对于每个组,每个变量(A,W,R,I,T)的值是0或1。 我想要做的是绘制组,在X轴中绘制变量名称,在y轴中每个组的计数变量的累积绝对值,填充等于值(无论值是0还是1)。
我尝试了以下内容:
这不符合我的预期(很可能我错过了一些显而易见的东西,但我对绘图很新)
ggplot(dt1, aes(x = variable, y = Counts)) +
geom_tile(aes(fill = factor(value)))
这可以按照我的预期工作,但问题是我只得到组而不是计数的绝对值:
ggplot(dt1, aes(x = variable, y = Group)) +
geom_tile(aes(fill = factor(value)))
组号是连续的,所以从1-30开始。但让我们举一个例子,我有3(1-3)组。在每个组中,每个变量(A,I,W,R,T)具有值1或0.并且每个组具有计数值,例如组1 105,组2 6098和组3 31。
我想要的是y轴值,直到6234(105 + 6098 + 31),其中第1组变量图块从0到105,第2组变量图块从105-6203,第3组变量图块从60203-63234。并且取决于值是0还是1,图块具有不同的填充。
我会对其他情节建议持开放态度,因为我对此很新,我可能会遗漏一些东西。
答案 0 :(得分:2)
我不确定你想要什么,但你可以添加一个交互术语来显示每个值的变量,如下所示:
set = interaction(as.factor(dt1$variable):as.factor(dt1$value))
ggplot(dt1, aes(x = set, y = Counts, fill = as.factor(Group))) + geom_bar(stat = "identity")
编辑按变量x计数,使用fill =值进行绘制,然后按组排序
ggplot(dt1, aes(x = variable, y = Counts, fill = as.factor(value))) +
geom_bar(stat = "identity",colour="black",aes(order=as.factor(Group)))