我试图用两组不同的奶牛的产奶量(称为FCM)构建一个简单的XY图(来自我从混合模型中获得的输出,使用最小二乘均值和SE)。我能够使用lattice中的xyplot函数构建显示最小二乘均值的图:
library(lattice)
xyplot(lsmean~Time, type="b", group=Group, data=lsmeans2[order(lsmeans2$Time),],
pch=16, ylim=c(10,35), col=c("darkorange","darkgreen"),
ylab="FCM (kg/day)", xlab="Week", lwd=2,
key=list(space="top",
lines=list(col=c("darkorange","darkgreen"),lty=c(1,1),lwd=2),
text=list(c("Confinement Group","Pasture Group"), cex=0.8)))
现在我想添加误差条。我用panel.arrow函数做了一些尝试,只是从其他例子中复制和粘贴,但没有得到任何进一步的结果。
我真的很感激一些帮助!
我的lsmeans2
数据集:
Group Time lsmean SE df lower.CL upper.CL
Stall wk1 26.23299 0.6460481 59 24.19243 28.27356
Weide wk1 25.12652 0.6701080 58 23.00834 27.24471
Stall wk10 21.89950 0.6460589 59 19.85890 23.94010
Weide wk10 18.45845 0.6679617 58 16.34705 20.56986
Stall wk2 25.38004 0.6460168 59 23.33957 27.42050
Weide wk2 22.90409 0.6679617 58 20.79269 25.01549
Stall wk3 25.02474 0.6459262 59 22.98455 27.06492
Weide wk3 24.05886 0.6679436 58 21.94751 26.17020
Stall wk4 23.91630 0.6456643 59 21.87694 25.95565
Weide wk4 22.23608 0.6678912 58 20.12490 24.34726
Stall wk5 23.97382 0.6493483 59 21.92283 26.02481
Weide wk5 18.14550 0.6677398 58 16.03480 20.25620
Stall wk6 24.48899 0.6456643 59 22.44963 26.52834
Weide wk6 19.40022 0.6697394 58 17.28319 21.51724
Stall wk7 24.98107 0.6459262 59 22.94089 27.02126
Weide wk7 19.71200 0.6677398 58 17.60129 21.82270
Stall wk8 22.65167 0.6460168 59 20.61120 24.69214
Weide wk8 19.35759 0.6678912 58 17.24641 21.46877
Stall wk9 22.64381 0.6460481 59 20.60324 24.68438
Weide wk9 19.26869 0.6679436 58 17.15735 21.38004
4条答案
按热度按时间5kgi1eie1#
为了完整起见,下面是一个使用
xyplot
的解决方案:panel.arrows
中的长度参数改变了错误头的宽度。您可以随意调整此参数以获得您喜欢的宽度。请注意,即使在指定
data =
时使用了lsmeans2[order(lsmeans2$Time),]
,Time的顺序仍然是错误的。这是因为时间是一个因子,R不知道你想让它按wk的数字后缀排序。这意味着它将在wk2之前对wk10进行排序,因为1小于2。您可以使用下面的小技巧来正确订购:请注意,即使重新排序了“Time”的级别,我仍然需要为
data =
参数使用排序后的数据。这是因为xyplot
按照数据集中出现的顺序绘制点,而不是因子水平的顺序。jaxagkaj2#
你想使用xplot有什么特别的原因吗?
ggplot2
更容易使用,也更漂亮。这是我认为你想要的例子。egdjgwm83#
如果两个组应在单独的面板中绘制,这可能是一种解决方案。
它使用了lattice的两个鲜为人知的特性,packet.number() 和 subscripts。
yquaqz184#
这里,一个小的面板函数,允许绘制中点,下端点和上端点(基于acylam的解决方案)。无需“手动”缩放y轴限值。
注意xyplot()调用中公式的LHS。