2013-02-07 111 views
0

親愛的堆棧溢出的讀者,Overplotting不同顏色的調色板GGPLOT2

我有一個數據集,我有「原始」數據和我另外計算某種平滑功能。然後我想將原始數據繪製爲點,並將平滑線繪製爲線。這適用於以下內容:

Loc <- seq(from=1,to=50) 
Loc <- append(Loc,Loc) 
x <- seq(from=0,to=45,by=0.01) 
Val <- sample(x,100) 
labels <- NULL 
labels[1:50] <- 'one' 
labels[51:100] <- 'two' 

x2 <- seq(from=12,to=32,by=0.01) 
Val2 <- sample(x2,100) 
raw <- data.frame(loc=Loc,value=Val,lab=labels) 
smooth <- data.frame(loc=Loc,value=Val2,lab=labels) 

pl <- ggplot(raw,aes(loc,value,colour=lab)) + geom_point() + geom_line(data=smooth) 
print(pl) 

結果看起來是這樣的:

enter image description here

的問題是,我的實際數據包含如此多的數據點,使用相同的調色板將是非常混亂(點與線之間的區別幾乎不可區分)。最好,我會讓geom_lines()稍微更暗。我已經嘗試過scale_colour_hue(l=40),但導致geom_points()也變得更暗。

感謝您的任何建議!

回答

2

我沒有給你一個完美的答案,但我有一個工程。你可以通過它們分成不同的幾何形狀單獨控制你的線條顏色,就像這樣:

ggplot(raw,aes(loc,value)) + 
geom_point(aes(col=lab)) + 
geom_line(data=smooth[smooth$lab=="one",], colour="blue", size=1) + 
geom_line(data=smooth[smooth$lab=="two",], colour="black", size=1) 

chart 1

這樣做的缺點是,你必須手動指定行選擇,但好處是,您可以手動指定每一行的視覺屬性。

另一種選擇是使用相同的調色板,但使線更大,部分透明的,就像這樣:

ggplot(raw,aes(loc,value,colour=lab)) + 
geom_point() + 
geom_line(data=smooth, size=2, alpha=0.5) 

chart 2

您應該能夠從這裏定製的東西,以滿足您需要。

+0

我最終選擇了結合你的第二個選擇和Didzis的solutiton;使geom_points()稍微不明顯,並且geom_lines()變粗。 – Gx1sptDTDa

+0

如果你有你的解決方案,只需選擇其中一個答案,並結束問題。 – Dinre

1

您可以設置alpha=的值爲geom_point(),而不是讓線條變得更暗,以減少點數。

pl <- ggplot(raw,aes(loc,value,colour=lab)) + geom_point(alpha=0.5) + 
     geom_line(data=smooth) 
print(pl) 

enter image description here

+0

看起來我們對alpha有類似的想法。 – Dinre