R 在镶嵌面时对多个绘图重复值

R 在镶嵌面时对多个绘图重复值,r,ggplot2,facet,R,Ggplot2,Facet,我有一个data.frame,看起来像这样: > foo class type (0,10] (10,20] (20,30] (30,40] 1 A <NA> 0.6 0.2 0.1 0.1 2 B <NA> 0.7 0.1 0.1 0.1 3

我有一个data.frame,看起来像这样:

> foo
        class      type    (0,10]    (10,20]    (20,30]    (30,40]
    1       A      <NA>       0.6        0.2        0.1        0.1
    2       B      <NA>       0.7        0.1        0.1        0.1
    3       C         1       0.5        0.4        0.1        0.0
    4       C         2       0.5        0.3        0.1        0.1
    5       D         1       0.7        0.3        0.0        0.0
    6       D         2       0.7        0.2        0.0        0.1
    7       E         1       0.4        0.3        0.2        0.1
    8       E         2       0.5        0.3        0.1        0.1

事实上,
facet\u grid()
创建了3个图形,但我希望以某种方式“忽略”类A和B是类型,并在类型1和类型2的facet中显示它们,并且只获得2个图形(事实上,A和B值应该重复):

我尽量避免手动修改并使用类型1和2复制A和B,因为我需要原始的data.frame,就像其他图形/测试一样


(很抱歉,列的顺序是随机的,我在家里使用的版本与工作中使用的版本不同,我不知道为什么会出现这种情况)

由于
ggplot
的原理,您将不得不进行数据复制:图中的每个项目恰好代表一个数据点。因此,如果希望将
NA
数据分为两个方面,则需要为每个原始数据项创建两个数据点

如果要避免仅为打印而显式创建临时数据,可以创建一个函数来为您执行数据复制。大致如下:

distribute.na.type <- function(dat) {
  rbind(
    transform(subset(dat, type %in% c(1, NA)), type=1),
    transform(subset(dat, type %in% c(2, NA)), type=2)
  )
}

distribute.na.type由于
ggplot
的原理,您将不得不进行数据复制:plot中的每个项目恰好代表一个数据点。因此,如果希望将
NA
数据分为两个方面,则需要为每个原始数据项创建两个数据点

如果要避免仅为打印而显式创建临时数据,可以创建一个函数来为您执行数据复制。大致如下:

distribute.na.type <- function(dat) {
  rbind(
    transform(subset(dat, type %in% c(1, NA)), type=1),
    transform(subset(dat, type %in% c(2, NA)), type=2)
  )
}

distribute.na.type您希望
type
的每个na值同时出现在A类和B类中(即,您希望复制na数据)?请通过添加用于融化数据和生成绘图的特定代码来澄清此问题。颜色的随机顺序非常奇怪。您使用的是哪个版本的
ggplot2
?在家里我使用了ggplot 0.9.3.1和r2.15.0,在工作中使用了ggplot 0.9.3和r2.15.2。我怀疑我在家中使用的版本不完全兼容。是否希望
类型
的每个NA值同时出现在A类和B类中(即,您希望复制NA数据)?请通过添加用于融化数据和生成绘图的特定代码来澄清此问题。颜色的随机顺序非常奇怪。您使用的是哪个版本的
ggplot2
?在家里我使用了ggplot 0.9.3.1和r2.15.0,在工作中使用了ggplot 0.9.3和r2.15.2。我怀疑我在家中使用的版本不完全兼容。如果数据重复不可避免,此解决方案效果良好,谢谢!如果数据重复不可避免,此解决方案效果良好,谢谢!