2017-01-17 38 views
2

我有一個包含5個列名和10個行名的數據框。此數據框中的值由-1到1之間的數字和NAs組成。用所有行名稱和列名繪製圖形

   Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 
Param1    NA  NA  NA  NA  NA 
Param2    NA  NA  NA  NA 0.9035769 
Param3  0.9810636  NA  NA  NA  NA 
Param4    NA  NA  NA  NA  NA 
Param5    NA  NA  NA  NA  NA 
... 
Param10    NA  NA  NA  NA  NA 

我想繪製一個圖,其中我有所有的行在Y軸上的行名和在X軸上的列名的列。此外,值表示特定顏色的點,並且此顏色的陰影決定值接近於1或-1。 NA可以是交叉標記或可以被忽略。

在此先感謝!

回答

2

我想我不能完全肯定,你在找什麼,但我想這樣做的一個方法是:

library(reshape2) 
df$row.names<-rownames(df) 
long.df<-melt(df,id=c("row.names")) 
plotted<-ggplot(long.df,aes(x=row.names,y=variable,color=value))+geom_point() 

注::如果你有行&列值的多個組合,那麼這將導致過度陰謀。這可以通過geom_jitter()或通過facet_wrap()/facet_grid()

注意處理2 ::如果您想了解更多每楊麗的答案&熱圖輸出沒有重疊的數據,你會在的地方請使用geom_tiles()geom_raster()geom_point()

+0

非常感謝!這對我有效。 修改了代碼,因爲我有很多的NAs。 (df1,id = c(「row.names」),na.rm = TRUE) plotted <-ggplot(long.df1, aes(x = variable,y = row.names,color = value,size = 2))+ geom_point() print(繪製)' – Chetan

+0

另一個問題,我有很多這樣的數據框(相同的列但行數可能不同),因此,會產生許多這樣的情節。我應該如何將它們合併成一個情節? – Chetan

+0

您應該能夠將數據集'rbind()'連接在一起。如果列是相同的,那麼長度應該是什麼都不重要。 –

1

如果我正確理解你,你基本上需要一個熱圖。在這種情況下,您的問題可能是duplicate,但我會告訴您一些基於您擁有的特定數據框架來製作熱圖的方法。

假設這是你的數據,我會減少行數和列數的簡單:

df <- data.frame(Comp.1 = c(0.3, -0.2, -1, NA, 1), 
      Comp.2 = c(-0.4, -0.1, NA, 0, 0.6), 
      Comp.3 = c(0.2, NA, -0.4, 0.3, NA)) 
row.names(df) <- c("Param1", "Param2", "Param3", "Param4", "Param5") 

基礎R

首先,轉化爲矩陣:

df_matrix <- data.matrix(df) 

接下來,您可以使用heatmap()這樣的功能:

heatmap(df_matrix, Rowv=NA, Colv=NA, col = cm.colors(256), scale="column", margins=c(5,10)) 

                                                                                                      heatmap1

你可以改變你與col參數使用的顏色。還有其他內置調色板,如rainbow(),heat.colors(),topo.colors(),但它仍然不會看起來很棒,所以您應該嘗試其他包,例如...

Plotly包

安裝plotly包,然後使用此代碼:

library(plotly) 

plot_ly(
    x = names(df), y = row.names(df), 
    z = df_matrix, type = "heatmap" 
) 

                                                                                            heatmap2

甲nd,如果你想自定義你的顏色,只需添加一個colors = <Insert your color range here>作爲額外的參數。這個熱圖也是交互式的。