我想在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))
答案 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