2015-10-05 150 views
1
prob_fun = function(n) 
{ 
    dat = c(1 - phyper(14, (0.01*9999999999), 9999999999-0.01*9999999999, n), 
       1 - phyper(14, (0.02*9999999999), 9999999999-0.02*9999999999, n), 
       1 - phyper(14, (0.03*9999999999), 9999999999-0.03*9999999999, n), 
       1 - phyper(14, (0.04*9999999999), 9999999999-0.04*9999999999, n), 
       1 - phyper(14, (0.05*9999999999), 9999999999-0.05*9999999999, n)) 
    dat 
} 

data = sapply(1:2000, prob_fun) 
plot(data[1,], ylim = c(0, 1)) 
lines(data[2,], lwd = 3) 

調整線的粗細我繪製data[1,],但爲什麼行顯得那麼厚得多比它應該是(因爲默認lwd應該= 1?)。我繪製了data[2,]lwd = 3作比較,它看起來很好。但爲什麼第一行顯得更厚?我該如何改變這一點?R:在情節

回答

1

你正在用點繪製一個bazillion(好的,只有2000)個連續值,所以「粗線」實際上只是一堆重疊點。嘗試

plot(data[1,], ylim = c(0, 1), type="l") 

"l"是「行」,你可以使用lty=...col=...或東西除了lwd=...區分這兩種線)

這是你的代碼的清潔改寫如下:

prob_fun <- function(n,s=9999999999) { 
    v <- (1:5)/100 
    phyper(14, v*s, (1-v)*s, n, lower.tail=FALSE) 
} 
data <- t(sapply(1:2000, prob_fun)) 
matplot(data,type="l",lty=1)