在stripplot()内并排打印因子级别

在stripplot()内并排打印因子级别,r,plot,strip,trial,stripchart,R,Plot,Strip,Trial,Stripchart,我试图使用stripplot()plotting函数比较几个试验的营养元素值(N、p、K等)。我希望看到每种营养素的单个值并排出现,而不是在每个试验的单独图中,以便可以在每种营养素内进行现成的比较(例如,比较“试验A”中的氮(N)值与“试验B”中的氮值)。该代码生成并排图,这在试验之间不容易进行比较: foo <- data.frame(conc=rnorm(90),element=rep(c("N","P","K"),each=30), trial=r

我试图使用
stripplot()
plotting函数比较几个试验的营养元素值(N、p、K等)。我希望看到每种营养素的单个值并排出现,而不是在每个试验的单独图中,以便可以在每种营养素内进行现成的比较(例如,比较“试验A”中的氮(N)值与“试验B”中的氮值)。该代码生成并排图,这在试验之间不容易进行比较:

foo <- data.frame(conc=rnorm(90),element=rep(c("N","P","K"),each=30),
                  trial=rep(c("Trial_A","Trial_B"),times=45))
stripplot(conc~element|trial,data=foo)

foo根据您的描述,我猜您希望将所有数据放在一个条带图中,使用
pch
设置指示各种试验。 下面的代码给出了如何实现这一点的示例。 基本上你只需要调整瓷砖的配方

我已经使用了一些非常基本的设置,但您当然可以在核心部分进行自定义。 我建议不要将所有数据绘制到一个图中,因为有6种不同类型的点对眼睛来说并不容易,也不便于对数据进行比较。 但这显然是你的选择

require(lattice)
foo <- data.frame(conc=rnorm(90),element=rep(c("N","P","K"),each=30),
              trial=rep(c("Trial_A","Trial_B"),times=45))

stripplot(conc~element,data=foo,pch=as.numeric(factor(foo$trial)))

如果您想使用
stripplot
,我认为您必须稍微转换数据。 您可以添加以下内容:

foo$group<-paste(foo$element,foo$trial)
stripplot(conc~group,data=foo,pch=as.numeric(factor(foo$trial)))

foo$groupI非常感谢代码建议。然而,我实际上是在尝试在点的单独“列”中并排绘制值。。。所以在这种情况下,对于2次试验中的N,P和K,沿着x轴,我会有如下顺序:N来自试验1,N来自试验2,P来自试验1,P来自试验2,K来自试验1,K来自试验2。。。因此,对于3个营养素和2个试验,我将有2x3=6个“列”的值,而不是3个列,其中两个试验的值组合在一个营养素中,并用符号表示。请参阅更新的答案。我使用了
ggplot
,更多详情请参见参考网站。我确信应该有一种方法可以使用
stripplot
,但我认为它需要更多的数据转换。谢谢!最后,我做了一些数据转换(对列重新排序),并在
stripplot
中解决了这个问题,但我使用了
ggplot
代码,效果也非常好。在我的最后一篇论文中,我将研究如何在
ggplot
中使它看起来更漂亮,因为学习如何使用
ggplot2
似乎是非常值得的。也许将您的解决方案发布给其他有同样问题的人会很有用。我刚开始使用此网站,所以我不确定将解决方案放在哪里,因为它不适合作为“评论”,但现在我意识到我可以在底部为我自己的问题添加一个答案。如果我要修改原来的帖子,请告诉我。谢谢
foo$group<-paste(foo$element,foo$trial)
stripplot(conc~group,data=foo,pch=as.numeric(factor(foo$trial)))