gpt4 book ai didi

r - ggplot 图例 : geom_abline interference

转载 作者:行者123 更新时间:2023-12-04 02:01:16 24 4
gpt4 key购买 nike

目标:为 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里面同时有“group”和“color”来实现分组着色是很标准的。

# 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 形成 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))

enter image description here

关于 #3 的评论:图例中的 ablines 已被删除,但点仍然不对。从这里开始,它变得越来越绝望。

# 3. Suppress the ab_line legend?
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope,
colour = Group), show.legend = FALSE)

enter image description here

关于 #4 的评论:这就是我目前想要的。没有传说胜过错误的传说。遗憾的是失去了颜色。

# 4. Remove the geom_abline legend AND colors
p + geom_abline(data = df, aes(intercept = Intercept, slope = Slope))

enter image description here

评论 #5:我不知道我在这里希望什么......如果我在调用 geom_point() 中定义数据和 aes 而不是与 ggplot() 相比,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"))

enter image description here

最佳答案

一个选项是为 mtcars 数据使用填充形状,然后你可以有一个 fill 比例和一个 color 比例,而不是两个 color 尺度。如果您不希望黑色轮廓。

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))

enter image description here

关于r - ggplot 图例 : geom_abline interference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com