【问题标题】:R ggplot2 - Color plot using row as group by colorR ggplot2 - 使用行作为按颜色分组的颜色图
【发布时间】:2014-04-06 02:20:21
【问题描述】:

我正在尝试绘制密度数据。我的桌子看起来像:

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

【问题讨论】:

  • 试试read.table("file.csv", header=T, sep="\t", check.names=F)
  • @lukeA 如果我尝试使用 check.names=F 我得到“不允许重复的 'row.names'”
  • 我们能有一个可重现的例子吗?

标签: r ggplot2 colors


【解决方案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))

【讨论】:

  • 感谢 jakub。事实上,我解决了刚刚添加的问题:data
  • 有时最简单的解决方案是最好的;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 2013-03-15
  • 1970-01-01
  • 2016-04-13
相关资源
最近更新 更多