我正在尝试qplot密度数据。我的表格如下:
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
答案 0 :(得分:1)
阅读您的编辑,我猜测具有不同名称的不同列中的值应该是相同的列 - 即,两个Element5列应该具有相同的颜色。在这种情况下,我只是去掉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))