我在R中有一个函数,它创建一个标准的法线图,然后使用一个for循环调用t分布的密度图以获得不同的自由度。情节如下:
请注意,自由度= 2的密度超出y轴限制。我想知道是否有办法编辑for循环,以便根据绘制的密度线的范围调整轴限制。
我使用的for循环代码如下:
N <- 1000
n <- c(25,50,100,200)
df<-c(1:4,seq(5,25,by=5))
histPlot <- function(data) {
x <- seq(-4, 4, length=100)
y <- dnorm(x, mean=0, sd=1)
plot(x, y, type="l",
main=paste("Distribution of size", nrow(data)/9000, sep=" "),
xlab="standard deviation")
colors <- brewer.pal(n = 9, name = "Spectral")
i<-1
for (d in df) {
lines(density(data[data$df==d, "t"]),col=colors[i])
legend("topright", pch=c(21,21), col=c(colors, "black"), legend=c(df, "normal"), bty="o", cex=.8)
i <- i+1
}
}
答案 0 :(得分:0)
lines
循环内调用的for
函数加起来就是现有的情节。
这意味着您必须更改ylim
函数调用中的plot
参数。这将创建更高的绘图,添加时将显示线条。
试试这样:
plot(x, y, type="l",
main=paste("Distribution of size", nrow(data)/9000, sep=" "),
xlab="standard deviation",
ylim = c(0, 1)) # This line will make the plot higher, i.e. the y axis range will be from 0 to 1