目的:为geom_point制作一个颜色图例,为每组显示一个彩色点,并为geom_abline图例,每一行显示一条彩色线。
我做错了什么吗?有解决办法吗?
# 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中同时包含“组”和“颜色”是标准的,以实现分组和着色。
# 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种颜色/线条组合。其中一个已经合并(绿色的那个)。我在这里做错了什么?
# 2. my naive attempt to add ablines of 3 different colours
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope,
colour = Group))

关于#3的评论:流线在传说中已经被删除,但是这些点仍然不正确。从现在开始,它变得越来越绝望。
# 3. Suppress the ab_line legend?
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope,
colour = Group), show.legend = FALSE)

关于#4的评论:这就是我现在要做的事情。不要传说总比错误的传说好。不过,丢了颜色很丢脸。
# 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())就不会劫持颜色和图例,但是没有,这似乎没有什么区别。
# 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"))

发布于 2017-11-07 11:08:46
一种选择是对mtcars数据使用填充的形状,然后可以使用fill刻度和colour刻度,而不是两个colour刻度。您可以在colour="white"语句中添加一个选项,以便在不需要黑色轮廓的情况下,更改点的边缘颜色。
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))

发布于 2017-11-08 11:06:57
如果需要或希望在图例中使用水平线,可以考虑使用以下代码:
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))https://stackoverflow.com/questions/47155673
复制相似问题