2017-06-03 90 views
-1

我已经编写了使用ggplot绘制两个类的某个数值变量的密度图的代码。但我无法处理传奇的外观。我的代码如下:控制ggplot中的图例

mu <- ddply(german, "Class", summarise, grp.mean=mean(Credit_amount)) 


ggplot(german, aes(x=Credit_amount, fill=as.factor(Class))) + 
    geom_histogram(aes(y=..density..), position="identity", alpha=0.3)+ 
    geom_density(alpha=0.6)+ 
    geom_vline(data=mu, aes(xintercept=grp.mean, color= as.factor(Class)), 
      size = 2, alpha = 0.6)+ 
    labs(title="Credit_amount for the Two Classes (Good and Bad Creditors",x="Credit_amount", y = "Density") + 
scale_fill_manual(limits=c("1", "0"), labels = c("Bad Creditors", "Good Creditors"), values = c("blue", "red")) 
+ labs(fill="Class of Customers") 

情节如下。我注释了我所瞄准的更改: enter image description here

我在做什么错了?我该怎么做呢?

您的建议将不胜感激。

回答

1

有人低估了你的可能性,因为如果没有数据集“德语”,就无法再现你所做的事情。您应该尝试翻译您的问题以使用每个人都可以访问的数据集。

这大约是你所拥有的,只是使用的数据集mtcars:

library(plyr) 
library(ggplot2) 
data(mtcars) 
mtcars$cyl = paste0(mtcars$cyl, ' cyl') 
mu <- ddply(mtcars, "cyl", summarise, grp.mean=mean(mpg)) 
ggplot(mtcars, aes(x=mpg, fill=as.factor(cyl))) + 
    geom_histogram(aes(y=..density..), position="identity", alpha=0.3)+ 
    geom_density(alpha=0.6)+ 
    geom_vline(data=mu, aes(xintercept=grp.mean, color= as.factor(cyl)), 
      size = 2, alpha = 0.6)+ 
    labs(title="Title",x="mpg", y = "Density") + 
    scale_fill_manual(limits=c('4 cyl', '6 cyl', '8 cyl'), 
        labels = c("4 cyl", "6 cyl", '8 cyl'), 
        values = c("red", "green", 'blue')) + 
    labs(fill="Class of Customers") 

enter image description here

要更改图例中的类别的顺序,包括像这样的一行代码,这将针对因子CYL物质的含量会在所希望的顺序:

mtcars$cyl = factor(mtcars$cyl, levels = c('8 cyl', '6 cyl', '4 cyl')) 
mu <- ddply(mtcars, "cyl", summarise, grp.mean=mean(mpg)) 

然后在ggplot代码,取出到as.factor(CYL)的引用,并简单地把因为cyl已经是一个因素。另外,在端添加行+引导件(颜色= FALSE)以除去不需要的图例:

ggplot(mtcars, aes(x=mpg, fill=cyl)) + 
    geom_histogram(aes(y=..density..), position="identity", alpha=0.3)+ 
    geom_density(alpha=0.6)+ 
    geom_vline(data=mu, aes(xintercept=grp.mean, color= cyl), 
      size = 2, alpha = 0.6)+ 
    labs(title="mtcars example",x="mpg", y = "Density") + 
    scale_fill_manual(limits=c('8 cyl', '6 cyl', '4 cyl'), 
        labels = c("8 cyl", "6 cyl", '4 cyl'), 
        values = c("red", "green", 'blue')) + 
    labs(fill="Class of Customers")+ 
    guides(color=FALSE) 

enter image description here