我不确定我是否完全遵循这个问题。如果我对您的理解正确,您希望确保每个图的范围为 11111(在此示例中,无论如何),但上限值和下限值会有很大差异。所以,现在,您正在寻找一种方法来创建您可能想要的所有可能的上限和下限的表格,然后您想在绘图时查找它们。
我建议您可以通过简单地编写 plot 语句来确保最小值和最大值始终相距 11111 来更容易地做到这一点。
假设您在一次循环迭代中得到了 start <- 235000、end <- 240000 和 trait <- B。你能像这样构造你的代码吗?
diff <- end-start
gap <- 11111-diff
plot(thing_you_plot,xlim(start-(gap/2),end+(gap/2))
带数字:
diff <- 240000-235000 (5000)
gap <- 11111-5000 (6111)
plot(thing_you_plot,xlim(235000-(6111/2),240000+(6111/2))
(x limits are: 231944.5,243055.5, making the plot 11111 in length)
显然,如果您愿意,可以使用下限和上限函数来获取整数而不是小数。您的问题尚不清楚“特征”如何真正影响尺寸;如果你可以有两个使用相同维度绘制的特征(B 和 C),为什么你还需要这张表呢?我认为您可以使用简单的函数为每个绘图做得更好。
根据修订编辑:
乔什打败了我,但又来了,因为我几乎把它都打字了。
df <- data.frame(trait=c("A","B","C","D"),
start=c(123456,234546,234546,345678),
end=c(134567,245678,245678,356789))
trait <- "C"
start <- 235000
end <- 240000
xmin <- df[which(start > df$start & end < df$end & trait == df$trait),2]
xmax <- df[which(start > df$start & end < df$end & trait == df$trait),3]