生态学种-面积曲线模拟抽样程序

生态学实验被拉到荒地去认植物(笑),最后要画一个将样方打乱,随机抽取然后统计样方面积与物种总数的关系(理论上是符合一个幂函数的关系)。然后突发奇想快速码出:

import xlrd
import xlwt
import random
from xlutils.copy import copy

def write_bank(text):
    bank = []
    all_sentence = text.split("\n",-1)
    for sentence in all_sentence:
        line = sentence.split(",",-1)
        #print(line)
        bank.append(line)
    return bank

def single_random_sort(bank):
    out_list = {}
    delete_group = []
    bank_0 = bank.copy()
    cycle_number = 0
    for j in range(len(bank)):
        random.shuffle(bank_0)
        group_element = bank_0[0]
        cycle_count = 0
        for i in group_element:
            if i in delete_group:
                continue
            else:
                cycle_count += 1
        cycle_number += cycle_count
        out_list[j+1] = cycle_number
        #print(j)
        bank_0.remove(group_element)
        delete_group += group_element
    return out_list

def write_out(out_list,number,bank,table):
    for i in range(len(bank)):
        #table.write(i,3*number,i+1)
        table.write(number,i,out_list[i+1])

def main():
    with open("1.txt","r",encoding='UTF-8') as file_object:
        text = file_object.read()
    cishu = int(input("输入模拟次数:"))
    bank = write_bank(text)
    oldbook = xlrd.open_workbook(filename="1.xls")
    newbook = copy(oldbook)
    table = newbook.get_sheet(0)
    for cycle in range(cishu):
        out_list = single_random_sort(bank)
        print(out_list)
        write_out(out_list,cycle,bank,table)
        print("done cycle",cycle+1)
    newbook.save('2.xls')

main()
print("All Done")

样本是这样(命名为了1.txt,每一行代表一个样方):

一年蓬,多苞斑种草,小苦荬,艾蒿,中华草沙蚕,高羊茅
一年蓬,小苦荬,艾蒿,高羊茅,北美独行菜,黄花婆罗参
一年蓬,小苦荬,艾蒿,高羊茅,黄花婆罗参,山莴苣,小酸模,泥胡菜,菊苣,米口袋,假还阳参
一年蓬,北美独行菜,泥胡菜,野老鹤草,朝天委陵菜,荻,附地菜
一年蓬,小苦荬,高羊茅,皱叶酸模
一年蓬,小苦荬,高羊茅,山莴苣,假还阳参,紫苜蓿
小苦荬,艾蒿,高羊茅,泥胡菜
小苦荬,艾蒿,高羊茅,泥胡菜
一年蓬,白茅,小苦荬,泥胡菜
艾蒿,高羊茅,山莴苣,紫苜蓿
小苦荬,山莴苣,高羊茅,泥胡菜,菊苣
小苦荬,高羊茅,山莴苣,中华草沙蚕
小苦荬,泥胡菜,一年蓬,中华草沙蚕,北美独行菜
一年蓬,多苞斑种草,小苦荬,艾蒿,中华草沙蚕,高羊茅,白车轴草
一年蓬,小苦荬,高羊茅,中华草沙蚕,山莴苣,小酸模,北美独行菜,假还阳参
小苦荬,艾蒿,高羊茅,中华草沙蚕,米口袋,小酸模,皱叶酸模,假还阳参
假还阳参,一年蓬,高羊茅,丝路蓟,小苦荬,中华草沙蚕,紫花地丁,山莴苣
白茅,高羊茅,中华草沙蚕,小苦荬,假还阳参,一年蓬
高羊茅,北美独行菜,附地菜,泥胡菜,小苦荬,中华草沙蚕
山莴苣,高羊茅,小苦荬,中华草沙蚕,附地菜,北美独行菜,一年蓬
一年蓬,白茅,高羊茅,假还阳参,中华草沙蚕,多苞斑种草,小苦荬
艾蒿,高羊茅,北美独行菜,假还阳参,小苦荬,一年蓬,中华草沙蚕
一年蓬,中华草沙蚕,高羊茅,假还阳参
女娄菜,多苞斑种草,艾蒿,小苦荬,假还阳参,高羊茅
小苦荬,多苞斑种草,月见草,泥胡菜,中华草沙蚕,高羊茅

程序最后输出的是每一次迭代下每个面积对应的物种数,所以还得你自己在Excel里面平均一下(懒得吧平均写到码里了)。最后图还挺漂亮的(稍微变换成了对数的).
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值