我试图使用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列,其中值被组合用于两个试验并用符号描绘。我希望这种描述有意义。如果我能做到的话,我会把我想要制作的情节图片包括在内,但是我想我已经有了这个问题的答案:)我想这样做的原因是因为我有很多营养素,每次试验都有很多价值,是的,当它们全部被绘制在一起时,它会变得有点笨拙,我试图区分这些符号!
答案 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)))
<强>更新强>
根据评论,可能的解决方案是使用ggplot
而不是stripplot
。
您可以随意自定义。
有关详细信息,请参阅this帖子。
library(ggplot2)
p<-ggplot(foo, aes(x=element, y=conc, color=trial)) +
geom_jitter(position=position_dodge(0.5))
p
如果您想使用stripplot
,我认为您必须稍微转换数据。
您可以添加以下内容:
foo$group<-paste(foo$element,foo$trial)
stripplot(conc~group,data=foo,pch=as.numeric(factor(foo$trial)))