使用gap.plot创建轴中断后的标签问题

时间:2016-06-28 10:46:33

标签: r plot dataframe

我一直在努力获得能够准确显示我的数据的情节,并花了一段时间来获得差距。图表启动并运行。在这样做之后,我有一个标记点​​的问题。

只需绘制我的数据就可以了:

Plot of abundance data, basically two different tiers of data at ~38,000, and between 1 - 50

正如您所看到的,这并没有清楚地显示我的情节的顶部或底部部分足以区分任何东西。

使用差距图,我设法得到:

gap.plot of abundance data, 100 - 37000 missed, labels only appearing on the lower tier

我的两个图的代码非常简单:

plot(counts.abund1,pch=".",main= "Repeat 1")
text(counts.abund1, labels=row.names(counts.abund1), cex= 1.5)

gap.plot(counts.abund1[,1],counts.abund1[,2],gap=c(100,38000),gap.axis="y",xlim=c(0,60),ylim=c(0,39000))
text(counts.abund1, labels=row.names(counts.abund1), cex= 1.5)

但我不知道为什么/能够弄清楚为什么标签(这些只是点所表示的字母)在两个图中的应用相同。

我尝试了这一点,我很少想到如何很好地绘制这样的事情,在学习时从来没有像这样的数据。

这来自的数据最初是一个大的(10,000 x 10,000矩阵),包含随机分类的字母a到z,然后有替换和" speciation"或者"移民"这导致第一批字母大约为38,000,第二批通常低于50.

我获得该矩阵以获得排名丰富后运行的代码是:

##Abundance 1
counts1 <- as.data.frame(as.list(table(neutral.v1)))
counts.abund1<-rankabundance(counts1)

以neutral.v1为矩阵。

counts.abund1的数据框看起来像(格式太差,抱歉):

rank    abundance   proportion  plower  pupper  accumfreq   logabun rankfreq    

a   1   38795   3.9 NaN NaN 3.9 4.6 1.9
x   2   38759   3.9 NaN NaN 7.8 4.6 3.8
j   3   38649   3.9 NaN NaN 11.6    4.6 5.7
m   4   38639   3.9 NaN NaN 15.5    4.6 7.5

并继续所有变量。我现在只使用Rank和Abundance,a,x,j,m只是适用的变量,以及我想用作图上标签的内容。

任何建议都会非常感激。我无法真正缩短代码或提供矩阵,因为数据类型非常具体,某种意义上的数量也是如此。

正如我所提到的,我一直在使用gap.plot在轴上创建一个中断,但如果有更好的解决方案来绘制这种类型的数据我绝对是全部的耳朵。

真的很遗憾,这是一个混乱的问题,现在整个事情都有点麻烦。

1 个答案:

答案 0 :(得分:1)

gap.plot()不会绘制两个绘图,而是绘制一个绘图,减少上部的值,绘制其他框并重写轴刻度标签。因此,上部区域的y坐标既不等于原始值也不等于轴刻度标签。上部区域的实际y坐标为"original value" - diff(gap)

gap.plot(counts.abund1[,1], counts.abund1[,2], gap=c(100,38000), gap.axis="y", 
         xlim=c(0,60), ylim=c(0,39000))
text(counts.abund1, labels=row.names(counts.abund1), cex= 1.5)
text(counts.abund1[,1], counts.abund1[,2] - diff(c(100, 38000)), labels=row.names(counts.abund1), cex=1.5)

# the example data I used
set.seed(1)
counts.abund1 <- data.frame(rank = 1:50, 
                            abundance = c(rnorm(25, 38500, 100), rnorm(25, 30, 20)))

enter image description here