簡體   English   中英

用ggplot2中的不同調色板進行過度繪圖

[英]Overplotting with different colour palettes in 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)

結果看起來像這樣:

在此處輸入圖片說明

問題在於我的實際數據包含如此多的數據點,以至於使用相同的調色板會非常混亂(點與線之間的差異幾乎無法區分)。 最好讓我使geom_lines()稍微暗一些。 我已經嘗試過使用scale_colour_hue(l=40) ,但這也會導致geom_points()變得更暗。

感謝您的任何建議!

對於您,我沒有一個完美的答案,但是我確實有一個可行的答案。 您可以通過將線條分為不同的幾何形狀來分別控制線條的顏色,如下所示:

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)

圖1

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

另一種選擇是使用相同的調色板,但使線條更大且部分透明,如下所示:

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

圖2

您應該能夠從此處自定義內容以適合您的需求。

您可以嘗試通過在geom_point()設置alpha= value來使點變淺,而不是使線變暗。

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

在此處輸入圖片說明

暫無
暫無

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

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