在stripplot中并列绘制因子水平()

时间:2015-11-12 20:57:26

标签: r plot strip trial stripchart

我试图使用stripplot()绘图功能比较几个试验中的营养元素值(N,P,K等)。我希望每种营养素并排显示各个值,而不是每个试验的单独图表,以便在每种营养素中进行易于比较的比较(例如,比较来自&#34的氮(N)值;试验A"来自"试验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)

有没有办法散布营养价值,以便只有一个大的stripplot,然后最终我会使用绘图符号(pch=)来描绘试验?

@ BlankUsername: 我非常感谢代码建议。但是,我实际上是试图在单独的&#34;列&#34;中并排绘制值。因此,在这种情况下,对于来自2次试验的N,P和K,沿着x轴,我将按此顺序:试验1中的N,来自试验2的N,来自试验1中的P,P来自试验2,来自试验1的K,来自试验2的K ......因此,对于3种营养素和2次试验,我将得到2x3 = 6&#34;列&#34;值,而不是3列,其中值被组合用于两个试验并用符号描绘。我希望这种描述有意义。如果我能做到的话,我会把我想要制作的情节图片包括在内,但是我想我已经有了这个问题的答案:)我想这样做的原因是因为我有很多营养素,每次试验都有很多价值,是的,当它们全部被绘制在一起时,它会变得有点笨拙,我试图区分这些符号!

1 个答案:

答案 0 :(得分:0)

根据您的描述,我猜您希望将所有数据放入一个stripplot,您可以使用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)))

enter image description here

<强>更新 根据评论,可能的解决方案是使用ggplot而不是stripplot。 您可以随意自定义。 有关详细信息,请参阅this帖子。

library(ggplot2)
p<-ggplot(foo, aes(x=element, y=conc, color=trial)) +
  geom_jitter(position=position_dodge(0.5))
p

enter image description here

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

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

enter image description here