geom_tile ggplot2中的变量y维度

时间:2017-04-25 11:32:46

标签: r ggplot2

我想绘制此数据表的值:

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,图块具有不同的填充。

我会对其他情节建议持开放态度,因为我对此很新,我可能会遗漏一些东西。

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)))