簡體   English   中英

ggplot圖例中缺少標簽

[英]ggplot missing labels in legend

我想繪制一些數據,然后為平均值和平均值+/-標准偏差添加回歸線和水平線,每種顏色均不同。 我已經做到了,但我無法正確理解圖例。 它顯示了前兩個的標簽,但對三個水平線沒有任何說明。 我怎樣才能使圖例也為這三行都貼上標簽?

另一篇文章提到show_guide = TRUE,但這對我不起作用。 我也一直在尋找scale_colour_manual的文檔,但這對我沒有幫助。

我的代碼是這樣的:

p <- qplot(mpg, wt, data = mtcars, colour="1")
p <- p + geom_smooth(method='lm',aes(x=mpg,y=wt,colour="2"),formula=y~x)
p <- p + geom_hline(yintercept = mean(mtcars$wt), colour = "3")
p <- p + geom_hline(yintercept = mean(mtcars$wt) + sd(mtcars$wt), colour = "3",    linetype="dashed")
p <- p + geom_hline(yintercept = mean(mtcars$wt) - sd(mtcars$wt), colour = "3", linetype="dashed")      
p <- p + labs(colour="")    
p <- p + scale_colour_manual(values = c("red","blue", "green","green","green"),labels=c("Data","Regression","Mean","Mean + SD","Mean - SD"))
p <- p + guides(colour = guide_legend())
print(p)

任何幫助將不勝感激,加油!

我認為這可能更接近您想要的:

d <- data.frame(yint = c(mean(mtcars$wt) - sd(mtcars$wt),
                mean(mtcars$wt),
                mean(mtcars$wt) + sd(mtcars$wt)),
                grp = c('dashed','solid','dashed'))

p <- ggplot(data = mtcars,aes(mpg, wt)) + 
    geom_point(aes(color = "Data")) +
    geom_smooth(method='lm',aes(x=mpg,y=wt,color = "Regression"),formula=y~x) + 
    geom_hline(data = d,aes(yintercept = yint,linetype = grp,color = "Mean +/- SD")) + 
    scale_linetype_manual(values = c('dashed' = 'dashed','solid' = 'solid')) + 
    labs(color = "")
print(p)

關於分別標記每條水平線的問題,我的回答是,這根本不屬於圖例。 這些應該用geom_text()標記:

d <- data.frame(yint = c(mean(mtcars$wt) - sd(mtcars$wt),
                         mean(mtcars$wt),
                         mean(mtcars$wt) + sd(mtcars$wt)),
                         grp = c('dashed','solid','dashed'),
                         lab = c('-SD','Mean','+SD'))

p <- ggplot(data = mtcars,aes(mpg, wt)) + 
    geom_point(aes(color = "Data")) +
    geom_smooth(method='lm',aes(x=mpg,y=wt,color = "Regression"),formula=y~x) + 
    geom_hline(data = d,aes(yintercept = yint,linetype = grp),color = "green") + 
    geom_text(data = d,aes(y = yint,label = lab),
              vjust = -0.5,hjust = 1,x = Inf,size = 3) +
    scale_linetype_manual(values = c('dashed' = 'dashed','solid' = 'solid')) + 
    labs(color = "")
print(p)

Joran的答案啟發了我進行一些更改,現在我設法編寫了一些代碼,這些代碼為我提供了所尋找的情節和傳說:

n <- ncol(mtcars)
mtcars[,n+1] <- mean(mtcars$wt)
mtcars[,n+2] <- mean(mtcars$wt) + sd(mtcars$wt)
mtcars[,n+3] <- mean(mtcars$wt) - sd(mtcars$wt)
p <- qplot(mpg,wt,data = mtcars, colour="1")
p <- p + geom_smooth(method='lm',aes(x=mpg,y=wt,colour="2"),formula=y~x)
p <- p + geom_line(aes(x=mpg,y=mtcars[,n+1],colour="3"))
p <- p + geom_line(aes(x=mpg,y=mtcars[,n+2],colour="4"),linetype="dashed")
p <- p + geom_line(aes(x=mpg,y=mtcars[,n+3],colour="5"),linetype="dashed")
p <- p + labs(colour="")    
p <- p + scale_colour_manual(values = c("red","blue",  "green","green","green"),labels=c("Data","Regression","Mean","Mean + SD","Mean - SD"))
p <- p + guides(colour = guide_legend())
print(p)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM