目标:为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
权限来正确处理图例。我还尝试在{a}中添加group = Group
。但是有一个更严重的问题: geom_point形成2组,geom_abline形成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()
而不是{{1}中定义数据和aes不知何故,ggplot()
不会劫持颜色和图例,但不会,它似乎没有什么区别。
geom_abline())
答案 0 :(得分:4)
一种选择是为mtcars
数据使用填充形状,然后您可以使用fill
比例和colour
比例,而不是两个colour
比例。如果您不想要黑色轮廓,可以在colour="white"
语句中添加geom_point
等选项,以便更改点边缘的颜色。
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))
答案 1 :(得分:0)
如果您需要或想要图例中的水平线,您可以考虑使用此代码:
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))