用gg多边形R绘制矩形

时间:2015-09-23 13:43:05

标签: r ggplot2

我想在ggplot的绘图上绘制一系列矩形,描绘蛋白质的区域。基本数据如下:

x    y     ids
6   9851    IgLike
10216   12022   PEVK
12041   14012   IgLike
14019   32144   Fibronectin
32178   32432   ProteinKinase
32496   34344   IgLike

第一列到第二列表示x轴上我希望标记为第3列的区域。我试图按照Hadley的http://docs.ggplot2.org/current/geom_polygon.html指南进行操作,但这有点让人困惑。我将数据转换为“位置”;

9851    .75  IgLike
6   0.75    IgLike
6   .9  IgLike
9851    .9  IgLike

12022   .75 PEVK
10216   0.75    PEVK
 10216  .9  PEVK
12022   .9  PEVK

14012   .75 IgLike
12041   0.75    IgLike
12041   .9  IgLike
14012   .9  IgLike

32144   .75 Fibronectin
14019   0.75    Fibronectin
14019   .9  Fibronectin
32144   .9  Fibronectin

32432   .75 ProteinKinase
32178   0.75    ProteinKinase
32178   .9  ProteinKinase
32432   .9  ProteinKinase

34344   .75 IgLike
32496   0.75    IgLike
32496   .9  IgLike
34344   .9  IgLike

几乎就在那里,但有些形状是重叠的,而不是它们应该是不连续的形状。 .75和.9的y轴值是任意的,我只想要一些厚度,因此它很容易看到不仅仅是一条线

然后

ggplot(positions, aes(x=x, y=y)) + geom_polygon(aes(fill=ids))

1 个答案:

答案 0 :(得分:1)

由于你只想要矩形,geom_polygon可能有点矫枉过正。当我使用您的原始数据时

df1 <- read.table(text="
                  x    y     ids
6   9851    IgLike
10216   12022   PEVK
12041   14012   IgLike
14019   32144   Fibronectin
32178   32432   ProteinKinase
32496   34344   IgLike",header=T)

我可以将它绘制为矩形,因为你已经在一行上给出了xmin(x)和xmax(y); ymin和ymax变量是任意的。

p1 <- ggplot(df1) +
  geom_rect(aes(xmin=x,xmax=y,ymin=1,ymax=2,fill=ids))
p1

enter image description here