簡體   English   中英

增加基礎 R 中段之間的垂直空間

[英]Increasing vertical space between segments in base R

我試圖為每個連續的間隔增加每個段之間的空間以避免過度繪制。 不知道如何解決這個問題,以便它在循環中垂直增加。

這是我的代碼和一些可重現的數據:


set.seed(200)
x <- rnorm(100, 10) 
truemean <- mean(x)

mat <- replicate(100, t.test(sample(x, rep = T))$conf.int) 
mat <- t(mat)

myfunc <- function(mat, truemean) {

  plot(x = c(min(mat[ , 1]), max(mat[ , 2])), 
       y = c(1, 100), 
       type = "n", 
       xlab = "0:100",
       ylab = "0:100")

  abline(v = truemean)

  for (i in 1:nrow(mat)) {

    if (mat[i, 1] <= truemean & mat[i, 2] >= truemean) {

      segments(x0 = mat[i, 1], y0 = i, 
               x1 = mat[i, 2], y1 = i, 
               col = "blue",
               lwd = 2)

    } else {

      segments(x0 = mat[i, 1], y0 = i, 
               x1 = mat[i, 2], y1 = i, 
               col = "red", 
               lwd = 2) 

    }

  }

}

myfunc(mat, truemean) 

你當然可以在段調用中添加任何你想要的東西,但我不確定你在問什么。 首先我們可以大大簡化你的代碼:

set.seed(200)
x <- rnorm(100, 10) 
truemean <- mean(x)

mat <- replicate(100, t.test(sample(x, rep = T))$conf.int) 
mat <- t(mat)

yval <- seq(dim(mat)[1])
clr <- ifelse(mat[, 1] <= truemean & mat[, 2] >= truemean, "blue", "red") 
plot(NA, xlim=c(min(mat[ , 1]), max(mat[ , 2])), ylim=c(0, length(yval)), type="n",
     xlab="Conf Int", ylab="Trials")
abline(v=truemean)
segments(mat[, 1], yval, mat[, 2], yval, col=clr)

這將產生以下 plot:

配置圖

您可以在 function segments中將yval替換為yval+.1以向上移動所有內容。 如果重疊的線條太多,您可以增加 plot 的高度以騰出更多空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM