首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格图图例: geom_abline干扰

格图图例: geom_abline干扰
EN

Stack Overflow用户
提问于 2017-11-07 10:32:57
回答 2查看 981关注 0票数 3

目的:为geom_point制作一个颜色图例,为每组显示一个彩色点,并为geom_abline图例,每一行显示一条彩色线。

我做错了什么吗?有解决办法吗?

代码语言:javascript
复制
# data: mtcars + some made-up straight lines
library(ggplot2)
df = data.frame(Intercept = c(2,3,4), Slope = c(0,0,0), Group = factor(c(1, 2, 3)))

关于#1的评论:基本情节没有什么特别之处,但我已经将数据分组在aes()中,并将颜色设置为aes()。我认为在aes中同时包含“组”和“颜色”是标准的,以实现分组和着色。

代码语言:javascript
复制
# 1. my basic plot
ggplot(data = mtcars, aes(x = mpg, y = wt, group = vs, color = factor(vs))) + 
    geom_point() -> p

关于#2的评论:很明显,我没有设置ggplot来正确地处理这个传奇。我还试图在aes中添加group = Group。但是还有一个更严重的问题:geom_point forms 2组,geom_abline forms 3组,但传说中只显示了4种颜色/线条组合。其中一个已经合并(绿色的那个)。我在这里做错了什么?

代码语言:javascript
复制
# 2. my naive attempt to add ablines of 3 different colours
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope,
                           colour = Group))

关于#3的评论:流线在传说中已经被删除,但是这些点仍然不正确。从现在开始,它变得越来越绝望。

代码语言:javascript
复制
# 3. Suppress the ab_line legend?
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope,
                           colour = Group), show.legend = FALSE)

关于#4的评论:这就是我现在要做的事情。不要传说总比错误的传说好。不过,丢了颜色很丢脸。

代码语言:javascript
复制
# 4. Remove the geom_abline legend AND colors
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope))

评论5:我不知道我在这里希望什么.如果我在调用geom_point()而不是ggplot()中定义了数据和aes,那么geom_abline())就不会劫持颜色和图例,但是没有,这似乎没有什么区别。

代码语言:javascript
复制
# 5. An attempt to set the aes inside geom_point() instead of ggplot()
ggplot() + 
    geom_point(data = mtcars, aes(x = mpg, y = wt, group = vs, color = factor(vs))) + 
    geom_abline(data = df, aes(intercept = Intercept, slope = Slope, color = "groups")) +
    scale_color_manual(values = c("red", "blue", "black"))

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-07 11:08:46

一种选择是对mtcars数据使用填充的形状,然后可以使用fill刻度和colour刻度,而不是两个colour刻度。您可以在colour="white"语句中添加一个选项,以便在不需要黑色轮廓的情况下,更改点的边缘颜色。

代码语言:javascript
复制
library(ggplot2)
df = data.frame(Intercept = c(2,3,4), Slope = c(0,0,0), Group = factor(c(1, 2, 3)))
ggplot(data = mtcars, aes(x = mpg, y = wt, group = vs, fill = factor(vs))) + 
           geom_point(shape=21, size=2) +
           geom_abline(data = df, aes(intercept = Intercept, slope = Slope,
                              colour = Group))

票数 4
EN

Stack Overflow用户

发布于 2017-11-08 11:06:57

如果需要或希望在图例中使用水平线,可以考虑使用以下代码:

代码语言:javascript
复制
library(ggplot2)
df = data.frame(Intercept = c(2,3,4), Slope = c(0,0,0),
Group = factor(c(1, 2, 3)))
ggplot(data = mtcars,
   aes(x = mpg, y = wt, group = vs, fill = factor(vs))) + 
geom_point(shape=21, size=2) +
geom_hline(data = df,
          aes(yintercept = Intercept,colour = Group))

赫林

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47155673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档