我试图用来geom_point
说明我的数据计数.我还想在图表中注明一些要点geom_text
.当我添加调用时geom_text
,它似乎正在绘制图例中点下方的内容.我试过扭转层的顺序无济于事.我无法理解为什么会这样做.谁看过这个吗?
set.seed(42)
df <- data.frame(x = 1:10
, y = 1:10
, label = sample(LETTERS,10, replace = TRUE)
, count = sample(1:300, 10, replace = FALSE)
)
p <- ggplot(data = df, aes(x = x, y = y, size = count)) + geom_point()
p + geom_text(aes(label = label, size = 150, vjust = 2))
Run Code Online (Sandbox Code Playgroud)
Mat*_*ker 25
这一直发生在我身上.诀窍是知道aes()
将数据映射到美学.如果没有要映射的数据(例如,如果您确定了单个值),则没有理由使用aes()
.我相信只有一个内心的东西aes()
会出现在你的传奇中.
此外,当您在其中指定映射时ggplot(aes())
,这些映射将应用于每个后续层.这是对你的X和Y,因为两者geom_point
并geom_text
使用它们.这很糟糕size = count
,因为这只适用于积分.
所以这些是我防止这类事情的两条规则:
aes()
.如果参数走的是一条单一的预先确定的值,将它传递给层外面的aes()
.ggplot(aes())
如果您确信每个后续层都将使用它,则仅映射数据.否则,在图层级别映射它.所以我会这样绘制:
p <- ggplot(data = df, aes(x = x, y = y)) + geom_point(aes(size = count))
p + geom_text(aes(label = label), size = 4, vjust = 2)
Run Code Online (Sandbox Code Playgroud)
koh*_*ske 18
或者,如果你需要在aes中指定文本的大小,那么legend = FALSE禁止绘制geom的图例:
p <- ggplot(data = df, aes(x = x, y = y, size = count)) + geom_point()
p + geom_text(aes(label = label, size = 150, vjust = 2), show_guide = FALSE)
Run Code Online (Sandbox Code Playgroud)