2016-09-25 43 views
1

我製作了一個PCA圖,其中我根據各種基因的表達繪製了許多細胞。在這個圖中,我想用單獨的顏色對一些點進行着色。我試圖通過創建「組」來實現這一點,我根據它們的表達或缺乏「gene1」的表達來分類細胞。R:使用自動繪圖時基於PCA的PCA中的顏色點

這裏就是我的數據幀的外表(基因1,基因2和cell_1,cell_2等都是colnames和rownames):

  gene1  gene2  gene3  gene4  gene5 
cell_1 0.0000 0.279204 25.995400 46.171700 94.234100 
cell_2 0.0000 23.456000 77.339800 194.241000 301.234000 
cell_3 2.0000 13.100000 45.309200 0.776565 0.000000 
cell_4 0.0000 10.500000 107.508000 3.032500 0.000000 
cell_5 3.0000 0.000000 0.266139 0.762981 123.371000 

下面是我用它來嘗試實現這一目標的代碼:

library(ggplot2) 
library(ggfortify) 

# Group cells based on expression of a certain gene (to use for color labels in the next step) 
groups <- factor(ifelse(df$gene1 > 0, "Positive", "Others")) 

#Calculate PCs and plot PCA 
autoplot(prcomp(log(df[]+1)), colour="Positive") 

當我運行此代碼時,出現以下錯誤:

Error in grDevices::col2rgb(colour, TRUE) : invalid color name 'Positive' 
+0

您應該使用組變量,而不是一個特定的標籤,從組變量。 – Pieter

+0

@Pieter謝謝。我應該提到 - 我嘗試過與「團體」和「其他人」也有同樣的錯誤。 (錯誤grDevices :: col2rgb(color,TRUE):無效的顏色名稱'groups') – Galaffer

回答

0

這個怎麼樣?

df$groups <- factor(ifelse(df$gene1 > 0, "Positive", "Others")) 

head(df) 
     gene1  gene2 gene3  gene4  gene5 groups 
1 0.5638534 8.968558 94.40170 62.93106 290.442698 Positive 
2 0.0000000 15.248374 45.87507 204.21703 291.501669 Others 
3 1.9059518 19.488162 75.89302 97.69643 177.833347 Positive 
4 1.9449987 6.358773 54.97159 41.54307 164.835188 Positive 
5 0.0000000 16.568077 31.62370 23.72278 31.774541 Others 
6 1.7199368 3.788276 80.51450 102.82221 6.259461 Positive 

autoplot(prcomp(log(df[1:5]+1)), data=df, colour='groups') 

enter image description here

+0

謝謝!它爲我返回錯誤: 錯誤在$ < - 。data.frame('* tmp *',「groups」,value = integer(0)): 替換有0行,數據有253 > autoplot (df [1:5] + 1)),data = df,color ='groups') df [1:5]中的錯誤:'closure'類型的對象不是子集合 但是,你的解決方案,我想出了這產生一個準確的情節,但也有一個令人困惑的警告: autoplot(prcomp(log(df [] + 1)),color = ifelse(df $ gene1> 0,「red」,「black」 )) 警告消息: In if(%%列中的值%){: 該條件的長度> 1並且只有第一個元素將被使用 – Galaffer

+0

str(df)給你什麼?用隨機生成的df更新了帖子,如果你的df具有相同的結構,它應該沒有錯誤地工作。對我來說,df是一個data.frame,所有基因列的類都是數字,組列是類因子。 –