使用混合工具时无法更改R的轴以进行密度图

时间:2018-07-24 17:09:32

标签: r plot

这应该很容易解决,我真的不知道出什么问题了。

假设我想对R中的旧忠实数据执行EM算法并绘制结果:

install.packages('mixtools')
library('mixtools')

test<-normalmixEM(faithful$waiting, k=2)
plot(test, which=2, xlim= c(30, 100))
lines(density(faithful$waiting), lty=2, lwd=2)

这有效。 但是,如果我想更改x标签或y轴,则会收到错误消息:

plot(test, which=2, xlim= c(30, 100), xlab="", ylim= c(0, 0.06))
lines(density(faithful$waiting), lty=2, lwd=2)

消息是:

  

参数4匹配多个形式参数

有人可以帮我吗?我究竟做错了什么?我真的很困惑。

谢谢!

2 个答案:

答案 0 :(得分:1)

在文档中,您需要遵循以下表格:

 plot(x, whichplots = 1, 
     loglik = 1 %in% whichplots,
     density = 2 %in% whichplots,
     xlab1="Iteration", ylab1="Log-Likelihood",
     main1="Observed Data Log-Likelihood", col1=1, lwd1=2,
     xlab2=NULL, ylab2=NULL, main2=NULL, col2=NULL, 
     lwd2=2, alpha = 0.05, marginal = FALSE, ...)

您需要使用xlab2 = ...

答案 1 :(得分:0)

plot()是一个泛型函数,实际上根据要绘制的内容调用更特定的函数(称为“方法”)(请参阅Hadley Wickham的 Advanced R中的this章) 书以获取详细信息)。在这种情况下,您正在将类“ mixEM”的对象提供给plot()。您可以通过运行例如

class(test)

通用函数plot()正在调用方法plot.mixEM(),因为您正在馈送类型为“ mixEM”的对象。要查看您可以控制plot.mixEM()的哪些参数,请查看该功能的帮助页面

?plot.mixEM

帮助文件清楚地表明,您需要xlab2作为参数而不是xlab。但是,我没有立即看到如何更改ylim,因此您应该查看plot.mixEM的源代码,以查看是否有一种方法可以调整图的其他组件:

getAnywhere(plot.mixEM)