2017-05-27 77 views
1

我是R新手,是此社區的新成員。爲繪圖函數中的特定分類變量指定特定顏色,其中r爲多個數據集

我現在必須處理大量數據,並且試圖讓我的生活更輕鬆,所以我想創建一個管道,在那裏我可以上傳文件,然後獲取圖表,餅圖,統計分析,和PCA。

在我的數據集中,我有8個重複出現的特定分類變量。讓我們稱他們爲A-H。所以爲了節省時間,我想給特定的變量指定一個特定的顏色: 例如。 A =藍色,B =白色等。

plot(sample.tsv $ Annotation, col = c(「blue」,「white」,「light blue」,「green」,「purple」,「red」 ,「黑色」,「黃色」),

我目前的功能看起來像上面那個,它對第一個數據集非常有用,但如果在我的下一個數據集B中不存在(可能是這種情況)當然顏色混合起來。 有一個簡單的解決方案,我錯過了什麼? 我已經看了3小時已經和我無法找到任何東西,這真的幫上websides。 預先感謝您!

回答

1

使用match我們可以創建一個將不同顏色關聯到每個變量名稱的映射。
這是一個應該澄清這個想法的例子。
我們開始考慮兩個部分共享相同變量名稱的數據集。

set.seed(1) 
df1 <- as.data.frame(matrix(rnorm(100),ncol=5)) 
df2 <- as.data.frame(matrix(rnorm(100),ncol=5)) 
names(df2) <- c("V1","V2","V4","V6","V5") 

names(df1) 
[1] "V1" "V2" "V3" "V4" "V5" 
names(df2) 
[1] "V1" "V2" "V4" "V6" "V5" 

現在我們產生的所有變量名稱的向量和相關顏色

all.vars <- unique(c(names(df1),names(df2))) 
all.cols <- rainbow(length(all.vars)) 

,然後我們

(cols.df1 <- all.cols[match(names(df1), all.vars)]) 
[1] "#FF0000FF" "#FFFF00FF" "#00FF00FF" "#00FFFFFF" "#0000FFFF" 
(cols.df2 <- all.cols[match(names(df2), all.vars)]) 
[1] "#FF0000FF" "#FFFF00FF" "#00FFFFFF" "#FF00FFFF" "#0000FFFF" 

在最後一場比賽中每個變量名不同顏色的載體,我們可以使用這些顏色繪製兩個數據集。這裏我們使用ggplot2

library(reshape) 
df1m <- melt(cbind(df1,id=1:nrow(df1)),id.vars="id") 
df2m <- melt(cbind(df2,id=1:nrow(df2)),id.vars="id") 

library(ggplot2) 
ggplot(aes(x=id, y=value, col=variable),data=df1m)+geom_line(lwd=1)+ 
    scale_color_manual(values=cols.df1) 

enter image description here

ggplot(aes(x=id, y=value, col=variable),data=df2m)+geom_line(lwd=1)+ 
    scale_color_manual(values=cols.df2) 

enter image description here

相關問題