suv <- mpg %>% filter(class == "suv") compact <- mpg %>% filter(class == "compact") ggplot(suv, aes(displ, hwy, color = drv)) + geom_point() ggplot(compact, aes(displ, hwy, color = drv)) + geom_point()
解决这个问题的一种方法是在多个图形之间共享标度,使用完整数据的范围来训练标度:
x_scale <- scale_x_continuous(limits = range(mpg$displ)) y_scale <- scale_y_continuous(limits = range(mpg$hwy)) col_scale <- scale_color_discrete(limits = unique(mpg$drv)) ggplot(suv, aes(displ, hwy, color = drv)) + geom_point() + x_scale + y_scale + col_scale ggplot(compact, aes(displ, hwy, color = drv)) + geom_point() + x_scale + y_scale + col_scale
在这个特定的例子中,你本可以直接使用分面,但这种技术在更一般的情况下很有用,例如,当你想把图形分散到报告的多个页面中时。
主题
最后,你可以使用主题来自定义图形中的非数据元素:
ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = class)) + geom_smooth(se = FALSE) + theme_bw()