我在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")
Run Code Online (Sandbox Code Playgroud)
出于某种原因,标题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))
Run Code Online (Sandbox Code Playgroud)
如果我改变颜色以及填充(通过将颜色= DE放入aes中),那么这些颜色在图例中可见.不过,我喜欢在点周围设置黑色边框.我只想让图例中的点内部反映出情节中的点填充.(我也想把这两个传说并排放置,但我真的只想让颜色现在正常工作)
我花了很长时间来搜索这两个问题并尝试各种解决方案而没有任何成功.有谁知道我做错了什么?
问题1:
为行类型和颜色图例指定相同名称的图例.
ggplot(df, aes(x, y, color=method, group=DE, linetype=DE)) +
geom_smooth(stat="identity") +
scale_color_discrete("Line") +
scale_linetype_discrete("Line")
Run Code Online (Sandbox Code Playgroud)
问题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))
Run Code Online (Sandbox Code Playgroud)
我不知道你是否可以控制传说中的点类型.也许其他有更多知识的人ggplot2可以搞清楚.