【问题标题】:Squish points to within plot axes in R plot在 R 图中将点压缩到绘图轴内
【发布时间】:2019-07-31 19:22:47
【问题描述】:

我正在 R 中制作火山图。我有大量的 pvalues 和 log2fold 变化。我设置了 xlim 和 ylim,因为我想专注于情节的中心区域。但是,自然地设置我的限制会排除我的一些数据。我希望在我的限制范围内显示我的轴限制之外的数据。因此,例如,4 的倍数变化将显示为我的 xlim 2 之外的一个点。

with(mydata, plot(ExpLogRatio, -log10(Expr_p_value), pch=20, main = "Volcano Plot",xlim=c(-2,2),ylim=c(0,40)))

这可行,但会删除我的一些数据点(那些倍数变化大于 2 且小于 -2 且 pvalue 小于 -log10(40) 的数据点

【问题讨论】:

  • 能否提供样本数据?也许dput(head(mydata,n=10)) (或尽可能多的行和列,以充分在不淹没问题/屏幕的情况下理解要点)。

标签: r bioinformatics


【解决方案1】:

如果我理解正确,我会使用 pmin 和 pmax 来限制您的值,例如:

values = seq(-3, 3, len=21)
pmin(pmax(values, -2), 2)

回馈:

 [1] -2.0 -2.0 -2.0 -2.0 -1.8 -1.5 -1.2 -0.9 -0.6 -0.3  0.0  0.3  0.6  0.9  1.2
[16]  1.5  1.8  2.0  2.0  2.0  2.0

即它的值限制在 (-2, +2) 范围内。

将此应用于您的数据,您将执行以下操作:

with(mydata, {
  lratio <- pmin(pmax(ExpLogRatio, -2.1), 2.1)
  pch <- ifelse(ExpLogRatio == lratio, 20, 4)
  plot(lratio, -log10(Expr_p_value), pch=pch, ylim=c(0, 40))
})

您可能希望设置 xlab 和 main 来设置标题,但我没有将其包括在内以保持答案更整洁。将其扩展到 y 轴显然也很容易

请注意,我还更改了绘图点样式以指示哪些点被截断

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多