2014-04-06 88 views
0

我正在嘗試qplot密度數據。我的表看起來爲:R ggplot2 - 按顏色按行分組的顏色圖

Element1 Element2 Element2 Element4 Element5 Element5 
1   1  1  1  1  1 
3   5  9  5  2  1 

我只想名字列的顏色,但是當我使用函數read.table [R自動改變我的名字Element2.1,Element2.2,Element5.1 Elemenet5.2。

我的代碼:

dataT <- read.table("file.csv", header=T, sep="\t") 
dataT.long = melt.data.frame(data=dataT) 
qplot(value, color=variable, data=dataT.long, geom='density', xlim='0.8')+ 
guides(col = guide_legend(ncol = 4, byrow = TRUE, keywidth = 0.5, keyheight = 0.5)) 

編輯:

如果我有這樣的表,如何通過組顏色?

Element1 Element2 Element3 Element4 Element5 Element6 
Group1 Group2 Group2 Group3 Group4 Group4 
1   1  1  1  1  1 
3   5  9  5  2  1 
+1

嘗試'read.table(「file.csv」,header = T,sep =「\ t」,check.names = F)''。 – lukeA

+0

@lukeA如果我嘗試check.names = F我得到「重複'row.names'不允許」 – user3502498

+0

我們可以有一個可重複的例子嗎? –

回答

1

閱讀你的編輯,我猜在具有不同名稱的不同列中的值確實應該同列 - 即,兩個元素5列應具有相同的顏色。在這種情況下,我只會去掉R附加到結尾以便區分變量名稱的.x。

# Read and melt data 
dataT <- read.table("file.csv", header=T, sep="\t") 
dataT.long = melt(data=dataT) 

# Remove the decimal dot and the numbers behind it 
dataT.long$variable = strtrim(dataT.long$variable, 8) # this will delete everything after the 8th character 

# So it looks like this: 
# element value 
#1 Element1  1 
#2 Element1  3 
#3 Element2  1 
#4 Element2  5 
#5 Element2  1 
#6 Element2  9 
#7 Element4  1 
#8 Element4  5 
#9 Element5  1 
#10 Element5  2 
#11 Element5  1 
#12 Element5  1 

# Plot 
qplot(value, color = variable, data = dataT.long, geom = 'density', xlim = '0.8') + 
    guides(col = guide_legend(ncol = 4, byrow = TRUE, keywidth = 0.5, 
          keyheight = 0.5)) 
+0

謝謝jakub。實際上,我解決了這個問題只需添加:data < - read.table(「data.csv」,header = T,sep =「\ t」,check.names = F,row.names = NULL)。我只想從每個組中拿出相同顏色的點,而不是將它們混合成一個。不管怎麼說,還是要謝謝你! – user3502498

+0

有時最簡單的解決方案是最好的;-) – jakub