0

我想在当前图表上绘制另一系列数据。附加数据仅包含 3 个(共 6 个)spp 的信息,这些信息用于 facet_wraping。

其他系列数据当前是一列(在同一个数据文件中)。

当前图表:

ped.num <- ggplot(data, aes(ped.length, seeds.inflorstem))

ped.num + geom_point(size=2) + theme_bw() + facet_wrap(~spp, scales = "free_y")

附加层将是:

aes(ped.length, seeds.filled)

我觉得我应该能够使用相同的 y 轴绘制它们,因为它们的值稍微小一些。我该如何添加这一层?

4

2 回答 2

2

@ialm 的解决方案应该可以正常工作,但我建议aes在每个中单独调用该函数,geom_*因为它使代码更易于阅读。

ped.num <- ggplot(data) +
                 geom_point(aes(x=ped.length, y=seeds.inflorstem), size=2) +
                 theme_bw() + 
                 facet_wrap(~spp, scales="free_y") +
                 geom_point(aes(x=ped.length, y=seeds.filled))
于 2013-11-14T23:44:16.133 回答
2

(如果您包含示例数据,您总会得到更好的答案,但我会在黑暗中试一试)

由于您想绘制两个相同的变量,因此在data.frame将数据输入 ggplot 之前重塑数据可能是最简单的:

library(reshape2)

# Melting data gives you exactly one observation per row - ggplot likes that
dat.melt <- melt(dat, 
                 id.var = c("spp", "ped.length"),
                 measure.var = c("seeds.inflorstem", "seeds.filled")
)


# Plotting is slightly different - instead of explicitly naming each variable,
# you'll refer to "variable" and "value"
ggplot(dat.melt, aes(x = ped.length, y = value, color = variable)) +
    geom_point(size=2) + 
    theme_bw() + 
    facet_wrap(~spp, scales = "free_y")

这些seeds.filled值应仅绘制在相应物种的方面。

我更喜欢 Drew 的(完全有效的)显式映射不同层的方法,因为无论您有两个变量还是 20 个变量,您只需要一个geom_point(),并且很容易将各种美学映射到variable.

于 2013-11-14T23:44:25.147 回答