R ggplot - 将所有数据点添加到所有分面

10

目前我还没有找到一个合适的答案,以下是我对R中ggplot2的简短问题:

data(mtcars)
ggplot(data=mtcars, aes(x=mpg, y=wt, fill=factor(cyl))) +
scale_fill_manual(values=c("red","orange","blue"))+
geom_point(size=2, pch=21)+
facet_grid(.~cyl)

在此输入图片描述

现在一切都很好,现在我想要每个小区域中的所有数据点(不论数字气缸是什么)(例如,在点下面带有平滑灰色)?

谢谢,迈克尔


2个回答

13

这里有一个简化,可以让生活更轻松。唯一需要做的就是从提供给背景geom_point()层的数据中移除分面变量。

library(tidyverse)
ggplot(data=mtcars, aes(x=mpg, y=wt)) + 
  geom_point(data=select(mtcars,-cyl), colour="grey") +
  geom_point(size=2, pch=21, aes(fill=factor(cyl))) + 
  scale_fill_manual(values=c("red","orange","blue")) + 
  facet_wrap(~cyl) 


(翻译:这是一个包含图片的段落,图片地址为 https://i.imgur.com/9SlzING.png ,图片没有文字说明。)

6

通过@beetroot提供的链接,我能够做到类似于这样的操作:

g1 <- ggplot(data=mtcars, aes(x=mpg, y=wt)) + 
  geom_point(data=mtcars[, c("mpg", "wt")], aes(x=mpg, y=wt), colour="grey") +
  geom_point(size=2, pch=21, aes(fill=factor(cyl))) + 
  scale_fill_manual(values=c("red","orange","blue")) + 
  facet_wrap(~cyl) 

这会产生这个图表: 在这里输入图片描述 希望这可以帮助你。

谢谢。我会详细说明提议的链接。也感谢您的建议,但是当我按照这种方式将其应用于我的特定数据时(但数据结构相同),我遇到了“错误:美学必须是长度为1或与数据(60)相同:x,y,fill”的问题。 - mod_che
@mod_che:我写的代码,你也遇到了错误吗?对我来说,它运行得很好。 - Kumar Manglam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接