【发布时间】:2015-07-31 22:03:16
【问题描述】:
我正在使用条形图绘制在海洋中不同深度的几个样本中发现的生物量。
barchart(density~depth, groups=species,
main=list(label="Species composition in Hinlopen",cex=2),
ylab="Species density(n pr. m3)",
data=species_density_depths_hinlopen,
origin=0,
auto.key=list(space="top",columns=3, title="Species"),
par.settings = my_settings)
这给了我一些不错的条形图,显示按深度分组的物种组成。 但是,并非在每个深度都发现了所有生物,并且条形图仍然为该生物条“应该”在的位置留出了空白。 有没有办法告诉条形图不要绘制这些空白? 以下是它目前的样子:
如您所见,条形之间有几个空白。
编辑 可重现的例子:
library(lattice)
dep <- c(replicate(10,10),replicate(10,20))
sp <- c(replicate(7,"Krill"),replicate(7, "Calanus"),replicate(6,"Ctenophora"))
dens <- rnorm(20,mean=5)
animals <- data.frame(species=sp,density=dens,depth=as.factor(dep))
barchart(density~depth, groups=species,
main=list(label="Species composition in Kongsfjorden (KB3)",cex=2),
ylab="Species density(n pr. m3)",
data=animals)
【问题讨论】:
-
我目前不确定如何,但是为什么要排除它呢?不同深度的数据缺失本身可能很有趣。 (请允许我参考电影 Contact 及其"eighteen hours" of recorded static。)
-
我同意缺席可能会很有趣。但它不需要由占用空间的空白空间来表示。我宁愿没有酒吧也没有空位。这样,现有的条形就可以更宽更容易看到。对于在总水柱中存在更多物种的其他地方,我的问题更加成问题。酒吧太多了,每个酒吧都变得非常小,因此去除空白就更重要了。想一想,因为空白处没有标签,所以你不知道它应该是什么。
-
这是一个有趣的问题。我认为您需要创建一个新的因子变量,它是其他两个的叉积,删除空级别,然后自己排序和着色。
-
注明。我不知道有任何 automated 方法可以做到这一点,因此您可能需要自己分解数据并使用并排的条形图。如果您喜欢冒险,我建议您使用
layout()或者甚至可能是par(fig)。前者更容易使用,但不允许单个情节的外观,而后者为您提供大量绳索。查看this page 进行比较。 -
你也可以试试
ggplot,library(ggplot2) ggplot(data=animals,aes(x=depth,y=density,fill=species))+geom_bar(stat="identity",position=position_dodge())。只是不确定您希望条形的高度是多少,因为对于每个深度,每个物种都有多个密度