2014-08-28 89 views
1

一個geom_errorbar我有以下代碼:更改線的顏色,當我有ggplot

library(ggplot2) 
library(gridExtra) 

data = data.frame(fit = c(9.8,15.4,17.6,21.6,10.8), lower = c(7.15,12.75,14.95,18.95,8.15), upper = c(12.44,18.04,20.24,24.24,13.44), factors = c(15,20,25,30,35), var = rep("Fator", 5)) 

gp <- ggplot(data, aes(x=factors, y=fit, ymax=upper, ymin=lower)) 
gp <- gp + geom_line(aes(group=var),size=1.2) + 
       geom_errorbar(width=.8, size=1, aes(colour='red')) + 
       geom_point(size=4, shape=21, fill="grey") + 
       labs(x = paste("\n",data$var[1],sep=""), y =paste("Values","\n",sep="")) + 
       theme(legend.position = 'none', axis.text = element_text(size = 11), plot.margin=unit(c(0.4,0.4,0.4,0.4), "cm"), axis.text.x = element_text(angle=45, hjust = 1, vjust = 1)) + 
       ylim((min(data$lower)), (max(data$upper))) 

我想改變線的顏色後,我有ggplot對象。我試圖:

gp + scale_color_manual(values = "green") 

但它更改錯誤欄顏色,而不是線條顏色。

1)我該如何改變線條顏色?

2)如何更改點顏色?

謝謝!

回答

0

試試這個:

gp$layers[[1]] <- NULL 
gp + geom_line(aes(group = var),color = "green",size = 1.2) 

類似的技術應該爲點層工作。技術是從我對similar問題的記憶中挖掘出來的。

我剛看了一下gp$layers的內容,看看是哪個是哪個。我假設該順序將是他們出現在您的代碼中的順序,但我不一定會依賴於此。

+0

這解決了!我試圖創建一個函數,您可以編輯任何通用ggplot對象的顏色和形狀。現在我只需要一種方法來識別對象中的圖層並更改參數。 非常感謝您的快速回答! – 2014-08-28 19:04:00

+0

我找到了另一種使用你推理的方法。我只是修改它: gp $ layers [[1]] $ geom_params $ color =「green」 這樣我就不會丟失來自初始圖層的信息。 – 2014-09-02 16:48:44