使用基于组

时间:2015-07-20 14:26:21

标签: r ggplot2

我正在尝试使用基于某些分组的颜色和基于某些值的顺序在R中创建单个条形或矩形图。见下面的例子:

enter image description here

对于那些对细节感兴趣的人,这就是我想要复制的内容:http://www.broadinstitute.org/cmap/help_topics_linkified.jsp(页面底部有很多这个情节的例子)

编辑(基于评论):y轴值是随得分列而变化的等级。颜色表示分组,其中正分数值为绿色,负数为红色,黑色线为一组“选定”行。这是堆积条形图。 y轴上的值(无论是等级还是得分)不是累积的,“选定”(黑色)组的组区域可以分布在其他三个组区域中(如下面的示例数据所示)。

示例:

structure(list(group = structure(c(1L, 1L, 4L, 1L, 1L, 3L, 3L, 
4L, 3L, 2L, 4L, 2L, 2L), .Label = c("positive", "negative", "null", 
"selected"), class = "factor"), rank = c(1, 2, 3, 4, 5, 7.5, 
7.5, 7.5, 7.5, 10, 11, 12, 13), xaxis = c(1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1), score = c(0.85, 0.7, 0.55, 0.4, 0.25, 0, 0, 
0, 0, -0.5, -0.65, -0.8, -0.95)), .Names = c("group", "rank", 
"xaxis", "score"), row.names = c(NA, -13L), class = "data.frame")

      group rank xaxis score
1  positive  1.0     1  0.85
2  positive  2.0     1  0.70
3  selected  3.0     1  0.55
4  positive  4.0     1  0.40
5  positive  5.0     1  0.25
6      null  7.5     1  0.00
7      null  7.5     1  0.00
8  selected  7.5     1  0.00
9      null  7.5     1  0.00
10 negative 10.0     1 -0.50
11 selected 11.0     1 -0.65
12 negative 12.0     1 -0.80
13 negative 13.0     1 -0.95

我尝试了以下但我正在寻找一个条形或矩形,而不是点。

ggplot(df, aes(xaxis,rank,colour=group)) + 
    geom_point(size=3) + 
    scale_colour_manual(values=c("positive"="green", "negative"="red", "null"="grey", "selected"="black")) + 
    theme_bw() + scale_y_reverse() + scale_x_discrete(breaks=NULL)

enter image description here

堆叠geom_bar()geom_rect()似乎无法使用连续的y值。

任何帮助将不胜感激。谢谢!

UPDATE (使用@ bjoseph的解决方案复制上面链接中显示的确切图表)

df$size = as.factor(1)
df$height = 1
ggplot(df, aes(1,x=size,y=height,fill=group,group=rank)) + 
    geom_bar(stat='identity') + science_theme +
    scale_fill_manual(values=c("positive"="green", "negative"="red", "null"="grey", "selected"="black")) + theme_bw() +
    scale_y_reverse(breaks=NULL) + scale_x_discrete(breaks=NULL)

enter image description here

1 个答案:

答案 0 :(得分:1)

这有效

df = structure(list(group = structure(c(1L, 1L, 4L, 1L, 1L, 3L, 3L, 
                                        4L, 3L, 2L, 4L, 2L, 2L), .Label = c("A", "B", "C", "D"), class = "factor"), 
                    value = 1:13), .Names = c("group", "value"), row.names = c(NA, 
                                                                               -13L), class = "data.frame")

df$size=as.factor(1)
df$height=1
ggplot(df, aes(1,x=size,y=height,fill=group,group=value)) + 
  geom_bar(stat='identity',color="black") + 
  theme_bw() 

它产生了附图。

enter image description here

color="black"内的geom_bar命令会在您的群组周围生成黑色轮廓。如果需要,您也可以抑制或手动标记y轴。