R Plot - 多个变量,数字和分类,分层

时间:2017-02-09 21:02:17

标签: r plot graph

还在学习R,并一直在努力策划。以下是我的数据的一部分,我将尝试解释情节的类型:

> head(bees.net.counts)
  Month Block Treatment Flower Bee_Richness Bee_Abundance
1   May     1        UB   POSI            1             1
2   May     2        DS   ERST            4            38
3   May     2        UB   RUBU            2             2
4   May     3        DS   ERST            3             4
5   May     3        DS   TROH            1            10
6   May     3        GS   ERST            1             1

我想制作一个图,其中Flower在x轴上(有54个不同的),Bee_Richness或Bee_Abundance在y轴上,不同颜色的符号用于Block(n = 4)和阴影量在治疗中的每一个符号(n = 3)(即第1组治疗UB是未填充的红色圆圈,第1组治疗DS是半阴影红色的圆圈,第1组治疗GS是完全阴影红色)。

我遇到的问题是每条线都被绘制而不是将每个点放在特定的花spp上面(有多个行,例如CHFA,但那些代表不同的块和处理)。

我也在月份尝试了这个,在那里我将四个月分开以制作不同的图形(以限制x轴的长度)。 5月有10个记录,有4种不同的花种。我仍然无法想办法做到这一点。

感谢您的帮助!!

编辑:这是我希望获得的内容= plot idea

1 个答案:

答案 0 :(得分:0)

这使用@ d.b解决方案的想法,但改进了轴标签。

plot(x = as.numeric(as.factor(df$Flower)), df$Bee_Richness, 
    pch = as.numeric(as.factor(df$Block)), 
    col = as.numeric(as.factor(df$Treatment)), 
    xaxt="n", xlab="Flower", ylab="Richness")
axis(1, at=1:length(levels(df$Flower)), 
    labels=levels(df$Flower))

Flower Plot

一些补充说明

根据您的要求,角色基于Block。 颜色基于治疗。我们来看看吧 颜色/处理。诀窍是,当你使治疗成为一个因素, 每个值在内部表示为整数,因此您可以 在因子上使用as.numeric并进行翻译 DS为1,GS为2,UB为3.这使得参数为 col = as.numeric(as.factor(df$Treatment)) 给DS颜色1,依此类推。 R使用数字1-8作为一些 易于访问的颜色。由于你只需要3,这样可以正常工作。 同样,
pch = as.numeric(as.factor(df$Block)) 为小测试数据中的三个Block值选择字符1到3。