在用户定义的函数中调整绘图轴 - R

时间:2016-11-23 23:23:56

标签: r

我在R中有一个函数,它创建一个标准的法线图,然后使用一个for循环调用t分布的密度图以获得不同的自由度。情节如下:

enter image description here

请注意,自由度= 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
  }
}

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