我愿意生成数据,以说明由于个体差异而导致的生态位重叠。为此,我使用了dnorm函数。它工作得很好,但它当然是一个密度,因此对于生态位表示是不准确的,生态位表示是对环境轴的反应。因此,我应该能够在不降低最大性能的情况下改变方差,这在使用密度时是不可能的(面积必须保持不变)。有没有人有办法生成一些钟形数据,或者最优曲线?我使用R,但我认为同样的原则可以应用于任何语言-我只需要拥有正确的数据!干杯!
发布于 2021-04-20 02:01:57
使用Kaiser-window函数的潜在解决方案:
library(ggplot2)
library(ggpubr)
library(signal)
x = seq(0, 10, 0.1)
Data <- data.frame(x1=x,
x2=x+1,#shifts the curve
y1=signal::kaiser(101, 100),
y2=signal::kaiser(101, 100),
y3=signal::kaiser(101, 50),
y4=signal::kaiser(101, 10))
A <- ggplot2::ggplot(data=Data, ggplot2::aes(x=x1, y=y1))+
ggplot2::geom_area(aes(fill="Species 1", colour="Species 1"), alpha = 0.7)+
ggplot2::geom_area(data=Data, ggplot2::aes(x=x2, y=y2, fill="Species 2", colour="Species 2"), alpha=0.7)+
ggplot2::xlab("Environmental axis (e.g. light)")+
ggplot2::ylab("Performance")+
ggplot2::scale_fill_manual(values = c("darkturquoise", "darkmagenta"), name=element_blank())+
ggplot2::scale_colour_manual(values = c("darkturquoise", "darkmagenta"), name=element_blank())+
ggplot2::theme(plot.background = ggplot2::element_blank(),
panel.grid.major = ggplot2::element_blank(),
panel.grid.minor = ggplot2::element_blank(),
panel.border = ggplot2::element_blank(),
legend.text = ggplot2::element_text(size = 20),
legend.position="none",
axis.title=element_blank(),
axis.text=element_blank(),
axis.ticks=element_blank())
B <- ggplot2::ggplot(data=Data, ggplot2::aes(x=x1, y=y3))+
ggplot2::geom_area(aes(fill="Species 1", colour="Species 1"), alpha = 0.7)+
ggplot2::geom_area(data=Data, ggplot2::aes(x=x2, y=y4, fill="Species 2", colour="Species 2"), alpha=0.7)+
ggplot2::xlab("Environmental axis (e.g. light)")+
ggplot2::ylab("Performance")+
ggplot2::scale_fill_manual(values = c("darkturquoise", "darkmagenta"), name=element_blank())+
ggplot2::scale_colour_manual(values = c("darkturquoise", "darkmagenta"), name=element_blank())+
ggplot2::theme(plot.background = ggplot2::element_blank(),
panel.grid.major = ggplot2::element_blank(),
panel.grid.minor = ggplot2::element_blank(),
panel.border = ggplot2::element_blank(),
legend.text = ggplot2::element_text(size = 20),
axis.title=element_blank(),
axis.text=element_blank(),
axis.ticks=element_blank())
figure <- ggpubr::ggarrange(A, B, ncol = 2, labels = c("A", "B"), common.legend=TRUE, legend="right")
annotate_figure(figure,
bottom = text_grob("Environmental axis (e.g. light)", size = 20, x=0.4),
left = text_grob("Performance", rot = 90, size = 20))

https://stackoverflow.com/questions/67164710
复制相似问题