我想要做的是循環使用不同樣本的數據集並使用ggplot2製作重疊密度圖。 1個參考樣本與其他樣本一起繪製在每個圖中。 繪圖本身是沒有問題的,但顏色是:爲ggplot2中的變量定義圖例顏色
數據集:
df <- data.frame(SampleName = c("a","a","a","b","b","b","c","c","c"),
Data = c(1,1,2,4,6,7,3,4,9))
隨着scale_fill_manual我可以一個顏色分配給特定的樣品:
#1
ggplot() +
geom_density(data=subset(df, SampleName == "a"),
aes(x = Data, group=SampleName, fill=SampleName), alpha= 0.6) +
geom_density(data=subset(df, SampleName == "b"),
aes(x = Data, group=SampleName, fill=SampleName), alpha= 0.6) +
scale_fill_manual(values = c("b" = "red", "a" = "green"))
與含有所有的矢量樣本名稱我可以製作一個循環,用「b」作爲固定樣本繪製所有疊加圖:
#2
Samples <- c("a","b","c")
for(i in 1:length(Samples)){
print(ggplot() +
geom_density(data=subset(df, SampleName == Samples[i]),
aes(x = Data, group=SampleName, fill=SampleName), alpha= 0.6) +
geom_density(data=subset(df, SampleName == "b"),
aes(x = Data, group=SampleName, fill=SampleName), alpha= 0.6) +
scale_fill_manual(values = c("red", "green"))
)
}
#2中的問題是樣品在b固定時改變顏色 - >在第一個圖中,b是綠色,a是紅色,圖3中的b是紅色,c是綠色。 當我嘗試將#1中的顏色分配給特定樣本(請參閱#3)時,將顯示以下錯誤消息:
「錯誤:意外'='於: 」aes(x = Data,group =我試過不同的事情,使'樣本[樣本名稱,填充=樣本名稱),alpha = 0.6))+ scale_fill_manual(values = c(「b」=「red」,Samples [i] =「
'我] = 「綠色」」更多 '的文本,如' 與as.character,粘貼(),...但是這似乎並沒有工作。 任何解決方案?
#3
for(i in 1:length(Samples)){
print(ggplot() +
geom_density(data=subset(df, SampleName == Samples[i]),
aes(x = Data, group=SampleName, fill=SampleName), alpha= 0.6) +
geom_density(data=subset(df, SampleName == "b"),
aes(x = Data, group=SampleName, fill=SampleName), alpha= 0.6)) +
scale_fill_manual(values = c("b" = "red", Samples[i] = "green"))
}
的伎倆! Thx很多,一直在尋找年齡來完成這項工作,並且讓它看起來很容易=) – User1234567