R GGPLOT2具有相同Y轴的多条线

时间:2017-03-09 23:09:38

标签: r ggplot2 reshape

我一直在和ggplot争吵。我正在尝试创建一个绘有三个变量的折线图 - 小树苗,中等树苗和大树苗。 X轴将是“平均树苗数量”,Y轴应为“鸟类物种丰富度”。

以下是摘录:

birdspp smallsaplings   mediumsaplings  largesaplings
95      5.044642857     2.384615385     1.30952381
97      3.482269504     1.873684211     1.390625
63      6.285714286     2               2.4
57      5.216216216     1.666666667     1.125

我的问题是,我不能为我的生活弄清楚如何在一张图上绘制所有三行!

我尝试了两种方法。传统的希望方式...

 
 ggplot(data, aes(y=birdspp, x=saplings)) + 
  geom_line(aes(x = smallsaplings, colour = "blue"))+
  geom_point(aes(x = smallsaplings, colour = "blue")) + 
  geom_line(aes(x = mediumsaplings, colour = "green")) +
  geom_point(aes(x = mediumsaplings, colour = "green")) + 
  geom_line(aes(x = largesaplings, colour = "red")) +
  geom_point(aes(x = largesaplings, colour = "red")) 

which produces this monstrosity :(

并使用重塑库中的融合功能...

mdf <- melt(mdf, id.vars="Sapplings", value.name="value", variable.name="birdspp")
ggplot(data=mdf, aes(x=Sapplings, y=value, group = birdspp, colour = birdspp)) +
    geom_line() +
    geom_point( size=4, shape=21, fill="white")

道歉,如果错误显而易见,我是新手。

1 个答案:

答案 0 :(得分:2)

这是一个经典的“从广到长”的问题。如果你先整理数据会更容易,因此它有一个具有树苗类型的列和另一个带有平均数的列。

library(dplyr)
library(tidyr)

df1 %>% 
  gather(sapling_type, mean_number, -birdspp)

现在您可以将其输入ggpplot并通过树苗类型进行颜色处理。我不确定线路。也许先从积分开始。

df1 %>% 
  gather(sapling_type, mean_number, -birdspp) %>% 
  ggplot(aes(mean_number, birdspp)) + geom_point(aes(color = sapling_type))

结果: enter image description here