4

我一直在处理此代码的变体:

library(ggplot2)

Compare = matrix(c(
0,           0,           "Soil 1", "tF",
0.379268025, 5.555806214, "Soil 1", "tF",
0.961561989, 13.05580621, "Soil 1", "tF",
1.55418685,  20.55580621, "Soil 1", "tF",
0,           0,           "Soil 2", "tF",
0.104297312, 1.581249799, "Soil 2", "tF",
0.705818262, 6.081249799, "Soil 2", "tF",
1.447379092, 10.5812498,  "Soil 2", "tF",
0,           20,          "Soil 1", "tf",
0.379268025, 13.1603086,  "Soil 1", "tf",
0.961561989, 12.72354396, "Soil 1", "tf",
1.55418685,  12.60549558, "Soil 1", "tf",
0,           20,          "Soil 2", "tf",
0.104297312, 10.51383279, "Soil 2", "tf",
0.705818262, 6.433709727, "Soil 2", "tf",
1.447379092, 5.82398083,  "Soil 2", "tf",
0,           0,           "Soil 1", "zf",
0.379268025, 205.7706005, "Soil 1", "zf",
0.961561989, 483.5483783, "Soil 1", "zf",
1.55418685,  761.3261561, "Soil 1", "zf",
0,           0,           "Soil 2", "zf",
0.104297312, 23.25367352, "Soil 2", "zf",
0.705818262, 89.43014411, "Soil 2", "zf",
1.447379092, 155.6066147, "Soil 2", "zf"), nrow = 24, ncol = 4, byrow = TRUE)

plot = ggplot(as.data.frame(Compare),
aes(as.double(Compare[,1]), as.double(Compare[,2]), color = Compare[,3])) +
    geom_point() + facet_grid(Compare[,4] ~ .)
plot

我的问题是facet_grid()代码方面。如果我将其注释掉或删除它,它运行得很好,所以我知道我可以将我的问题隔离到与它有关的事情上。我想要完成的是一组垂直堆叠的三个面板,Compare[,1]在 x 轴上,Compare[,2]在 y 轴上,颜色基于Compare[,3](在每个面上为两种土壤类型生成一组点),以及三个根据 产生的刻面Compare[,4]

当我使用facet_grid()包含在代码中运行时得到的错误是:

Error in layout_base(data, rows, drop = drop) : 
    At least one layer must contain all variables used for facetting

我觉得我的错误可能与强制双打和数据帧处理矩阵的初始形式有关,但不确定需要更改什么。

4

1 回答 1

5

您的问题比组件更深远facet_grid

  1. 矩阵只能保存一种类型的数据。如果您有多种类型,请使用data.frame.
  2. 您的代码对于强制从到as.double不正确(根据需要,因为您有一个强制字符矩阵-> data.frame。factornumeric
  3. ggplot并且aes应该引用列名,而不是使用[.
  4. facet_grid甚至更特别需要names,甚至不是其功能。

所以,拯救你的数据。

CP <- as.data.frame(Compare)

CP[[1]] <- as.numeric(as.character(CP[[1]]))
CP[[2]] <- as.numeric(as.character(CP[[2]]))
# your data.frame names are..
names(CP)
# [1] "V1" "V2" "V3" "V4"

ggplot(CP, aes(x = V1, y = V2, colour = V3)) +
 geom_point() + facet_grid(V4 ~ . )

在此处输入图像描述

于 2013-11-11T22:46:25.967 回答