2017-06-03 95 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