0

我对 R 不是很熟悉。我使用 R 为不同的 lambda(从 1 到 10)制作泊松分布图,并显示每个的图作为比较。

但我想根据 lambda 在图表上自动添加一个标题:“lambda = 1”表示图 1,“lambda = 2”表示图 2 ...等。但我无法弄清楚如何自动更新标题。这是我的代码,我能够正确输出 10 个不同的图形,但不确定如何自动更新或添加相应的 lambda 到标题。有人可以给我一些提示。

也可以说绘图 1 到 5 的字体大小为“小”,然后字体大小为 6 到 10?

谢谢

the_data_frame<-data.frame(matrix(ncol=10,nrow=21))
lam<-seq(1,10,1)
lam
x<-seq(0,20,1)
x
for (i in 1:10){
the_data_frame[i]<-exp(-lam[i])*lam[i]**x/gamma(x+1)
}
the_data_frame<-cbind(the_data_frame, x)


par(mfrow=c(5,2))
for (i in 1:10){
plot(the_data_frame[[i]]~the_data_frame[[11]], the_data_frame)
}
4

4 回答 4

1

你可以简化问题。使用一个循环,在 lamda 值上,您在每次迭代时使用毒公式计算 y 的值,然后绘制它。我使用main参数为每个情节添加标题。在这里,我bquote用来获取 lambda 值的绘图格式。

例如,对于 4 个 lambda 值,您会得到:

x<-seq(0,20,1);lam = c(0.5,1,2,4)
par(mfrow=c(2,2))
lapply(lam,function(lamd){
  y <- exp(-lamd)*lamd*x/gamma(x+1)
  plot(x,y,main=bquote(paste(lambda,'=',.(lamd))),type='l')

})

在此处输入图像描述

于 2013-03-14T19:45:45.737 回答
0

这可能会有所帮助:

for (i in 1:10){
    plot(the_data_frame[[i]]~the_data_frame[[11]], the_data_frame,
        main=paste("lambda=", i, sep=""))
}
于 2013-03-14T19:22:53.383 回答
0
library(ggplot2)
xval <- rep(0:20,10)
lambda <- rep(1:10,21)
yvtal <- exp(- lambda)*lambda**xval/gamma(xval+1)
the_new_data_frame <- data.frame(cbind(xval,lambda,yval))

plot1 <- ggplot(the_new_data_frame, aes(xval, yval)) + geom_line(aes(colour=factor(lambda)))
plot1
plot1 + facet_grid(~lambda)
于 2013-03-14T20:58:38.830 回答
0

您是否正在寻找一个交互式窗口,您可以在其中输入文本并更新图形标题?如果是,您可能需要查找 tcltk 包。

http://bioinf.wehi.edu.au/~wettenhall/RTclTkExamples/modalDialog.html

于 2013-03-16T19:13:28.670 回答