2014-04-06 65 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