-1

从这种数据开始:

colnames(mydata)<-c("digit","freq","bool")

1.1 1 false
1.1 2 false
1.1 20 true
1.1 3 false
1.1 7 false
1.2 8 false
1.2 25 false
1.2 10 false
1.2 60 true
1.2 28 false
1.3 7 false
1.3 0 false
1.3 56 true
1.3 12 false
1.3 7 false
1.3 4 false
1.4 3 false
1.4 87 false
1.4 25 false
1.4 56 false
1.4 167 true
2.1 46 false
2.1 25 false
2.1 75 true
2.1 20 false
2.1 12 false
2.1 15 false

...我想digit使用 ggplot2 根据数据中的字段创建多个图。

我试过了

ggplot(mydata, aes(y = mydata$freq, x = seq(1, length(mydata$freq)))) + 
    geom_point() + 
    facet_wrap(~ mydata$digit)

但它不会起作用。另外,我想mydata$freq根据false or true $bool注释为数据赋予两种不同的颜色。

因此,基本上类似于geom_point(aes(colour=mydata$bool))每个子图(方面)中的内容。

我怎样才能让它工作?


dput(mydata)
structure(list(digit = c(1.1, 1.1, 1.1, 1.1, 1.1, 1.2, 1.2, 1.2, 
1.2, 1.2, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.4, 1.4, 1.4, 1.4, 1.4, 
2.1, 2.1, 2.1, 2.1, 2.1, 2.1), freq = c(1L, 2L, 20L, 3L, 7L, 
8L, 25L, 10L, 60L, 28L, 7L, 0L, 56L, 12L, 7L, 4L, 3L, 87L, 25L, 
56L, 167L, 46L, 25L, 75L, 20L, 12L, 15L), bool = structure(c(1L, 
1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L), .Label = c("false", 
"true"), class = "factor")), .Names = c("digit", "freq", "bool"
), class = "data.frame", row.names = c(NA, -27L))
4

1 回答 1

1

您正在尝试强制ggplot2只需要列名的数据框列。正确的语法更经济:

ggplot(mydata, aes(y = freq, x = 1:nrow(mydata), colour = bool)) + 
  geom_point() + 
  facet_wrap(~ digit) +
  labs(x = "1, 2, ..., n")

在此处输入图像描述

PS我无法审查您堆叠/可视化数据的方式,我不知道它来自什么以及它代表什么。

于 2013-08-31T18:45:14.460 回答