gpt4 book ai didi

r - 在 R 中使用 ggplot2 更改图例中的颜色

转载 作者:行者123 更新时间:2023-12-01 09:28:17 25 4
gpt4 key购买 nike

我在 ggplot 中指定图例中的颜色时遇到了两个不同的问题。我试着做一个简化的例子来说明我的问题:

df <- data.frame(x=rep(1:9, 10), y=as.vector(t(aaply(1:10, 1, .fun=function(x){x:(x+8)}))), method=factor(rep(1:9, each=10)), DE=factor(rep(1:9, each=10)))
ggplot(df, aes(x, y, color=method, group=DE, linetype=DE)) + geom_smooth(stat="identity")

由于某种原因,标题 DE 下的图例中显示的线型都是蓝色的。我希望它们是黑色的,但我不知道为什么它们首先是蓝色的,所以我不知道如何更改它们。

对于我的另一个问题,我尝试同时使用点颜色和点形状来显示我的数据中的两种不同的区别。我想有这两个传说。这是我所拥有的:

classifiers <- c("KNN", "RF", "NB", "LR", "Tree")
des <- c("Uniform", "Gaussian", "KDE")

withoutDE <- c(.735, .710, .706, .628, .614, .720, .713, .532, .523, .557, .677, .641, .398, .507, .538)
withDE <- c(.769, .762, .758, .702, .707, .752, .745, .655, .721, .733, .775, .772, .749, .756, .759)

df <- data.frame(WithoutDE=withoutDE, WithDE=withDE, DE=rep(des, each=5), Classifier=rep(classifiers, 3))
df <- cbind(df, Method=paste(df$DE, df$Classifier, sep=""))

ggplot() + geom_point(data=df, aes(x=WithoutDE, y=WithDE, shape=Classifier, fill=DE), size=3) + ylim(0,1) + xlim(0,1) + xlab("AUC without DE") + ylab("AUC with DE") + scale_shape_manual(values=21:25) + scale_fill_manual(values=c("pink", "blue", "white"), labels=c("Uniform", "KDE", "Gaussian")) + theme(legend.position=c(.85,.3))

如果我更改要更改的颜色以及填充(通过将 color=DE 放入 aes),那么这些在图例中可见。不过,我喜欢在点周围有黑色边框。我只想让图例中的点内部反射(reflect)图中的点填充。 (我也想并排放置两个图例,但我真的只想让颜色立即生效)

我花了太长时间在谷歌上搜索这两个问题,并尝试了各种解决方案,但都没有成功。有谁知道我做错了什么?

最佳答案

对于问题 1:

为线型的图例和颜色的图例赋予相同的名称。

ggplot(df, aes(x, y, color=method, group=DE, linetype=DE)) + 
geom_smooth(stat="identity") +
scale_color_discrete("Line") +
scale_linetype_discrete("Line")

对于问题 2:

我认为您的填充与您的数据不匹配。您应该将值的名称分配给 scale_x_manual 调用中的每种颜色。

我无法为这些点设置黑色边框。不过,这是我能够得到的:

ggplot() + 
geom_point(data=df, aes(x=WithoutDE, y=WithDE, shape=Classifier,
fill=DE, colour=DE), size=3) +
ylim(0,1) + xlim(0,1) +
xlab("AUC without DE") +
ylab("AUC with DE") +
scale_shape_manual(values=21:25) +
scale_fill_manual(values=c("Uniform"="pink", "KDE"="blue", "Gaussian"="white"),
guide="none") +
scale_colour_manual(values=c("Uniform"="pink", "KDE"="blue", "Gaussian"="white"),
labels=c("Uniform", "KDE", "Gaussian")) +
theme(legend.position=c(.85,.3))

我不知道你是否可以控制图例中的点类型。也许对 ggplot2 有更多了解的其他人可以弄清楚。

关于r - 在 R 中使用 ggplot2 更改图例中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330257/

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