我'm reading Hadley Wickham' s ggplot2 book并希望对我的其中一个练习的解决方案发表评论:
第6.5.1节
练习1
以下代码创建了两个mpg数据集图 . 修改代码,使图例和轴匹配,而不使用构面!
fwd <- subset(mpg, drv == "f")
rwd <- subset(mpg, drv == "r")
ggplot(fwd, aes(displ, hwy, colour = class)) + geom_point()
ggplot(rwd, aes(displ, hwy, colour = class)) + geom_point()
这是我的解决方案:
ggplot(fwd, aes(displ, hwy, colour = class)) +
geom_point() +
lims(x = c(0, 7), y = c(0, 45)) +
geom_point(aes(colour = class), alpha = 0, data = mpg) +
guides(colour = guide_legend(override.aes = list(alpha = 1)))
ggplot(rwd, aes(displ, hwy, colour = class)) +
geom_point() +
lims(x = c(0, 7), y = c(0, 45)) +
geom_point(aes(colour = class), alpha = 0, data = mpg) +
guides(colour = guide_legend(override.aes = list(alpha = 1)))
我觉得我的想法很聪明,但对大型数据集来说效率不高 . 有没有更直接的方法来解决这个问题?或者这是练习的目标是什么?
1 回答
只需使用
drop = FALSE
即可保留所有因子水平 .