点图中的两个分组变量

Two grouping variables in a dotplot

我正在尝试使用以下数据框在 R 中创建一个简单的 dotplotlattice 包):

df<-data.frame(Sediment=c("Algae", "Algae", "Algae", "Bare", "Bare", "Bare", "Dredged", "Dredged", "Dredged"), Rep=c(1,2,3,1,2,3,1,2,3), LeafElongation=c(0, 20.6, 0, 29.1, 41.4, 45.9, 54.1, 22.3, 26.7))

我想使用标记颜色按 Sediment 对数据进行分组,使用标记形状按 Rep 对数据进行分组。到目前为止,这是我的代码:

dotplot(LeafElongation~Sediment, data=df, groups=Sediment, method="jitter", col = 
      c("darkolivegreen", "darkgoldenrod3", "sienna"), main= "Leaf Elongation: Ramet Plots", ylab="Average total plant leaf elongation (cm)", cex.main=1.7, cex.lab=1.2, cex.axis=1.7)

我已经成功地将我的数据按沉积物分组,这通常是我希望绘图显示的方式,但我希望每个代表都有不同的形状(圆圈代表 1,菱形代表 2,三角形代表 3 ).我还希望填充而不是打开形状。此外,我认为 jitter 方法应该分离重叠点,以便可以看到两者,但在这种情况下它似乎不起作用。

您可以将此作为附加参数添加到您的点图中以按形状分组。 pch = c(16, 17, 18)[df$Rep]

您可以按照本指南将 16、17、18 换成任何其他形状:http://www.endmemo.com/program/R/pchsymbols.php

pch 参数就是您要查找的内容。只需将它添加到您的代码中并直接使用 df$Rep 提供它。您可以删除现在不需要的参数 groups

dotplot(LeafElongation~Sediment, data=df, 
    method="jitter", 
    col = c("darkolivegreen", "darkgoldenrod3", "sienna"), 
    main= "Leaf Elongation: Ramet Plots", 
    ylab="Average total plant leaf elongation (cm)", 
    cex.main=1.7, cex.lab=1.2, cex.axis=1.7,
    pch = df$Rep)