• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

使用ggplot2改变图例中的颜色R

r 来源:Amanda 3次浏览

我在指定ggplot中的图例中的颜色时遇到了两个不同的问题。我试图做一个简单的例子,显示我的问题:使用ggplot2改变图例中的颜色R

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

如果我改变颜色改变,以及填充(通过把颜色= 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") 

问题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其他人可以弄明白。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)