[英]How to create a dotplot in R using ggplot2
我有看起来像这样的数据
year species number.of.seed dist.to.forest
2006 0 -5
2006 Bridelia_speciosa 3 0
2006 0 5
2006 Carapa 5 10
2006 0 15
我创建了一个条形图,该条形图每年显示在种子陷阱中发现的不同物种的数量,并显示它们与森林的距离,如下所示:
我想使用geom =“ dotplot”,并用一个点代表我所计算的每个物种,基本上与条形图完全相同,但不是2006年的第一个条,而是24个点,而是第二个小节的23个点等。但是当我使用geom =“ dotplot”时,我无法使它工作,而不是我想要的方式,我可以在24或23处使用单个点,但不能使用24个点。 对于SO上的类似问题,我已经尝试了许多其他解决方案,但是没有任何效果。 提前谢谢了。
我的代码:
dat1<-read.csv(file="clean_06_14_inc_dist1.csv")
diversity<-function(years){
results<-data.frame()
dat2<-subset(dat1, dat1$year %in% years)
for (j in years){
for (i in seq(-5, 50, 5)){
dat3<-subset(dat2, dat2$year == j & dat2$dist.to.forest == i)
a<-length(unique(dat3$species))
new_row<-data.frame(year = j, dist.to.forest = i, number.of.species = a)
results<-rbind(results, new_row)
}}
print(results)
qplot(x = dist.to.forest, y =number.of.species, data = results, facets = .~year, geom = "bar", stat = "identity")
}
diversity(2006:2008)
我认为您的问题是,您试图像在条形图中那样同时使用x和y值来绘制点状图,而我相信点状图只能用作一个直方图,并且仅使用一个变量。 。
因此,如果我没记错的话,如果您在感兴趣的变量中使数据框与众不同(因为您需要唯一的种类数),则可以立即绘制它,基本上就像
dat2 = unique(dat1[,c("year","species", "dist.to.forest")])
qplot(x=dist.to.forest, data=dat2, facets=.~year, geom="dotplot")
附带一提,我认为您可能会使这种图表变得比需要的复杂,并且您可能希望研究dplyr ,这使这种数据处理变得轻而易举。
require(dplyr)
dat1 = tbl_df(read.csv(file="clean_06_14_inc_dist1.csv"))
dat2 = dat1 %.%
filter (year %in% 2006:2008) %.%
group_by (year, dist.to.forest) %.%
summarise (number.of.species = n_distinct(species))
qplot(x=dist.to.forest, y=number.of.species, data=dat2, facets=.~year, geom="bar")
免责声明:由于您未提供任何示例数据,因此这段代码简直就是我的脑海,并且可能包含错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.