三物种竞争

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
plt.rcParams['lines.linewidth']=2
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['font.size']=20
plt.rcParams['figure.figsize']=(21,7)
sns.set_style('white')
pal = sns.color_palette('hls',3)

# Initial Parameters
fungis = [
            {'rate': None, 'K': 1e6, 'Nt': 1},
            {'rate': None, 'K': 1e6, 'Nt': 1},
            {'rate': None, 'K': 1e6, 'Nt': 1}
         ]
iteration = 5000#Number of breeding contests
"""
first:3diff  --->>0.12 0.14 0.16  1500
second:3same---->>0.12 0.12 0.12  1500
third:2same----->>0.12 0.14 0.14  1500
"""

def logistic(ind,Nt0,Nt1,Nt2):
    Nt = (Nt0,Nt1,Nt2)[ind]
    fungis = [
                {'rate': 0.12, 'K': 1e5, 'Nt': 1},
                {'rate': 0.14, 'K': 1e5, 'Nt': 1},
                {'rate': 0.14, 'K': 1e5, 'Nt': 1}
              ]#Here change the param
    K = fungis[ind]['K']

    if ind == 0:sums =Nt1/Nt*Nt1/fungis[1]['K']  + Nt2/Nt*Nt2/fungis[2]['K']
    if ind == 1:sums =Nt0/Nt*Nt0/fungis[0]['K']  + Nt2/Nt*Nt2/fungis[2]['K']
    if ind == 2:sums =Nt0/Nt*Nt0/fungis[0]['K']  + Nt1/Nt*Nt1/fungis[1]['K']
    delta_N = fungis[ind]['rate']*(1-Nt/K-sums)*Nt*0.1#计算增量
    return delta_N

# Beginning of reproduction
Nt0 = fungis[0]['Nt']
Nt1 = fungis[1]['Nt']
Nt2 = fungis[2]['Nt']
rate0 = []
rate1 = []
rate2 = []
N0 = []
N1 = []
N2 = []
for i in range(iteration):
        N0.append(Nt0)
        N1.append(Nt1)
        N2.append(Nt2)
        delta_N0 = logistic(0, Nt0, Nt1, Nt2)
        delta_N1 = logistic(1, Nt0, Nt1, Nt2)
        delta_N2 = logistic(2, Nt0, Nt1, Nt2)
        rate0.append(delta_N0/Nt0)
        rate1.append(delta_N1/Nt1)
        rate2.append(delta_N2/Nt2)
        Nt0+=delta_N0;Nt1+=delta_N1;Nt2+=delta_N2#Updata
        if (Nt0 <= 0):Nt0 = 1e-10;
        if (Nt1 <= 0):Nt1 = 1e-10;
        if (Nt2 <=0 ):Nt2 = 1e-10;




data_rate = pd.DataFrame(np.array([rate0,rate1,rate2]).T,columns=['Fungis 1','Fungis 2','Fungis 3'])
data_rate.to_excel('./3diff growth.xlsx',index=False)
data_Num  = pd.DataFrame(np.array([N0,N1,N2]).T,columns=['Fungis 1','Fungis 2','Fungis 3'])
data_rate[data_rate<0]=0#Remove values whose growth rate is less than zero
data_Num[data_Num==1e-10]=0#replace 1e-10 with 0
data_rate.to_excel('./2samef growth.xlsx',index=False)#save file
data_Num.to_excel('./2same Num.xlsx',index=False)#save file

plt.subplot(1,3,1)
sns.lineplot(data=data_rate,palette=pal)
sns.scatterplot(data=data_rate,palette=pal,legend=None)
plt.xlabel('Hyphal extension rate')

plt.subplot(1,3,2)
sns.lineplot(data=data_Num,palette=pal)
sns.scatterplot(data=data_Num,palette=pal,legend=None)
plt.xlabel('Breeding number')
sns.despine(top=True,right=True)

plt.subplot(1,3,3)
sns.lineplot(data=data_Num[:750],palette=pal)
sns.scatterplot(data=data_Num[:750],palette=pal,legend=None)
plt.xlabel('Breeding population detail')
sns.despine(top=True,right=True)

plt.savefig('./queation2-1(2diff.svg')
plt.show()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值