Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2017:alunos:trabalho_final:laura.campos:start

Laura Busin Campos

20_anos_-_4.jpg

Mestranda em Oceanografia Biológica pelo Instituto Oceanográfico (IO-USP)

Orientador: Prof. Dr. Marcos César de Oliveira Santos

Desenvolvendo projeto sobre uso de área e posicionamento trófico de pequenos cetáceos utilizando análise de isótopos estáveis de carbono e nitrogênio no litoral sul do Estado de São Paulo e norte do Paraná, pelo Laboratório de Biologia da Conservação de Mamíferos Aquáticos (LABCMA)


Exercícios

Trabalho final

Proposta A

No estudo do hábito alimentar de espécies é muito utilizado o método de Pinkas et al. (1971), conhecido como Índice de Importância Relativa (IIR), que busca encontrar a melhor forma de visualização dos alimentos principais e dos raros, sendo que seu resultado é baseado em três parâmetros descritivos: frequência numérica (FN%), frequência de ocorrência (FO%) e porcentagem de biomassa (B%). Seu resultado é dado pela fórmula:

IIR = (FN% + B%) * FO%.

Devido à importância deste índice, Henrique-Garcia (2010) buscou criar uma ferramenta para melhor visualização dos dados obtidos pelas variáveis (FN%, FO% e B%) e que pudessem ser interpretadas de forma conjunta. Mas o diagrama criado por Henrique-Garcia (2010) foi construído para ser usado no programa MATLAB e como este não é um open source (e a licença é bem cara), achei que seria interessante e útil fazer um script tentando reproduzir esse diagrama para ser usado no R, que é aberto para todos.

A função proposta irá produzir uma imagem que possuirá a representação gráfica do diagrama com os três parâmetros (FN%, FO% e B%) (Como a mostrada no exemplo abaixo) e retornará um data-frame com os valores do índice de importância relativa (IIR) e a sua porcentagem (IIR%) para cada espécie de presa.

diagrama_iir.jpg

Para isso, o objeto de entrada deve ser um data-frame com as variáveis espécies de presa, %FN, %FO e %B (Exemplo abaixo, os dados não são os correspondentes ao gráfico acima). Os argumentos serão: número de espécies de presa; tipo de arquivo de imagem a ser gerado; nome do arquivo de imagem a ser gerado; dimensões desejadas da imagem de retorno.

tabela_de_entrada.jpg

Referências citadas:

Pinkas et al. (1971)

Henrique-Garcia (2010)

Oi Laura, tudo bem?

Sua proposta está bem clara e organizada, obrigado! =)

Porém, achei ela um tanto simples… pelo o que entendi, você usará as 3 colunas do objeto de entrada para calcular duas novas colunas (usando uma fórmula bem simples) e depois construir um gráfico usando as mesmas 3 colunas, certo? E é um gráfico aparentemente com poucos parâmetros. Além disso, me parece uma tarefa bem específica.

Uma vez gerado os índices e o gráfico, o que o pesquisador geralmente faz com isso? Não tem nenhum teste estatístico posterior envolvido? Talvez incluir na proposta mais coisas (como outros gráficos e análises, etc.) ajude-a a ficar mais factível. O ideal é que a proposta te traga desafios e você possa aprender mais coisas com ela (usando pelo menos um FOR dentro), mas do jeito que está parece muito simples ainda.

Se estiver com dificuldades para pensar em como melhorá-la, me avise.

Veja também meus comentários na outra proposta.

Abraços! — Rodolfo Liporoni Dias 2017/06/02 17:38

Olá Rodolfo!

Obrigada pela resposta rápida!

Eu achei que pra fazer esse gráfico seria um pouco mais complicado, não sabia que não precisaria usar for nem if

Então, com esses dados específicos de IIR, FN%, FO% e B% não tem nenhum teste estatístico que normalmente é feito, pois eles só mostram qual item de presa seria mais importante de acordo com esses parâmetros… Outras análises poderiam ser feitas utilizando os dados brutos…

O que eu posso fazer é utilizar como entrada a tabela dos dados brutos, onde eu tenho os dados de biomassa de cada item de presa encontrado dentro do estômago de cada indivíduo, e a partir dessa tabela eu calcularia os parâmetros de FN%, FO%, B% (FN% = (ni.100)/Ni, FO% = (ne.100)/Ne e B% = biomassa de uma espécie de presa/biomassa total de todos os estômagos, sendo que ni é o número de indivíduos de determinada presa nos estômagos, Ni é o número total de presas em todos os estômagos, ne é o número de estômagos que contém a determinada presa e Ne é o número total de estômagos com conteúdo alimentar) e depois faria o gráfico e o cálculo do IIR como eu tinha proposto antes! Se quiser, da pra complicar um pouco mais, colocando um argumento com o tipo de presa, se peixe ou cefalópode, pois como esses dois tipos de presas possuem tempos diferentes de digestão dentro do estômago, não podem ser calculados juntos. Abaixo um exemplo de como seria a tabela de entrada:

tabela_de_entrada2.jpg

Por favor, me avise caso não tenha entendido, tenho a sensação de que não deixei muito claro as mudanças…

Abs,

Laura Busin Campos 2017/06/06 15:42

Oi Laura, tudo bem?

Gostei do seu retorno, ficou tudo claro sim, obrigado! Acho que a função ficaria mais interessante se o objeto de entrada fosse a tabela com dados brutos mesmo. Assim, você terá que pensar num jeito de generalizar todos os cálculos, e poderá ter como objetos de saída a tabela com tudo já (IIR, FN%, FO% e B%) mais o gráfico. Talvez eu tenha subestimado a complexidade do gráfico, então vamos deixá-lo como está na proposta original. Uma sugestão que eu dou para deixar o usuário mais livre para escolher o gráfico que quer (e portanto aumentar o poder da função) é criar um argumento que diga a ordem de cima para baixo de presas que deve aparecer no gráfico. Por exemplo, usando a sua figura ali em cima, deixar o usuário falar que quer a presa “Lolingucula brevis” na primeira posição ao invés de na segunda. Que tal? Faz sentido ou sempre tem uma ordem definida por outros critérios?

Também acho que seria legal incluir o argumento com o tipo de presa que você sugeriu, porque na proposta original sua função tinha apenas um argumento. Uma função com mais argumentos é mais desafiadora e vai te ajudar a sedimentar melhor os conceitos do curso. Beleza?

Já pode começar a fazer a proposta A, e qualquer dúvida, só mandar e-mail!

Abraços! — Rodolfo Liporoni Dias 2017/06/06 15:57

Olá Rodolfo!

Tudo bem, e você?

Com relação a ordem que as espécies de presas aparecem no gráfico, normalmente é do maior IIR pro menor, eu acho que isso é só pelo fato de ficar mais organizado e não por algum motivo específico, então daria sim pra tentar deixar como uma escolha do usuário, se que conseguir, hehe!

Então vou começar a fazer a proposta A mesmo, pois será bem útil pra mim!

Obrigada pela ajuda e por todas as dicas!

Abs,

Laura Busin Campos 2017/06/07 11:01

Proposta B

Ganhar na Mega Sena é o sonho de muitos brasileiros que apostam nas muitas lotéricas espalhadas pelo Brasil. O momento mais esperado é o sorteio dos números que irão decidir pra quem irá o prêmio. A cartela é composta de 60 números, de 1 a 60. A aposta mínima possível é de 6 números e a máxima é de 15 números, mas os valores das apostas aumentam de acordo com o aumento da quantidade de números apostados, pois a chance de ganhar é maior. Em cada rodada são sorteados 6 números, e os prêmios em dinheiro são pagos para quem acerta quatro (quadra), cinco (quina) ou seis números (sena). Caso o número de ganhadores seja maior que um, o prêmio é dividido em partes iguais. Mas qual é a chance de uma pessoa ganhar?

Essa função tem como objetivo calcular a probabilidade de se ganhar na Mega Sena de acordo com o número de apostas feitas e a quantidade de números jogados. Para isso, os argumentos serão: número de apostas feitas, quantidade de números jogados (6 a 15) e o prêmio que se quer saber a probabilidade de ganhar (quadra, quina ou sena). O retorno da função será uma lista, sendo o primeiro item a probabilidade de acerto e o segundo item o preço que sairá a aposta; e um gráfico de pizza mostrando a chance de ganhar ou não o prêmio (Para facilitar a visualização do usuário).

Oi de novo! =)

Esta proposta é interessante, mas me parece simples de implementar também, e gostei mais da proposta A, que parece que lhe seria mais útil né?

Recomendo repensar e melhorar um pouco a proposta A antes de voltarmos a conversar. Enquanto isso, vou trocar ideias com outros monitores.

Qualquer dúvida ou dificuldade, estou à disposição!

Abraços! — Rodolfo Liporoni Dias 2017/06/02 17:52


Função

Página de ajuda

IIR.graf                    package: nenhum                    R Documentation


                         Calculo e Diagrama do IIR


Descricao:

A partir de um data.frame com informacoes de numero do individuo, tipo de presa,
especie de presa e biomassa da presa, estima a frequencia numerica (FN%),
frequencia de ocorrencia (FO%), porcentagem de biomassa (B%), indice de
importancia relativa (IIR) e porcentagem de IIR (%IIR) para cada especie de
presa, sendo os tipos de presa escolhidos pelo usuario. Retorna um grafico para
cada tipo de presa com o diagrama de IIR, com os tres parametros (FN%, FO% e B%)
representados, sendo o numero de especies representadas escolhido pelo usuário.

Uso:

IIR.graf(arquivo,presa,n.esp.graf)

Argumentos:

arquivo		
	    Data.frame com quatro colunas: primeira com a indentificacao do
	    individuo, segunda com o tipo de presa, terceira com a especie da
	    presa e a quarta com a biomassa da presa.

presa		
	    Vetor de caracteres com os tipos de presas que serao analisados, os
	    nomes devem ser exatamente os mesmos contidos no data.frame.			
                
n.esp.graf	
	    Vetor numerico com o numero de especies que serao representadas no
	    grafico para cada tipo de presa.

Detalhes:

As biomassas devem ser fornecidas com a mesma unidade de medida.Se houver NA's
estes serao transformados em 0.

Para uma melhor visualizacao do diagrama do IIR, amplie a janela grafica ao
maximo.

No diagrama, cada retangulo representa a importancia de cada especie de presa
ingerida, sendo que os eixos horizontais representam a frequencia numerica (FN%) e
porcentagem de biomassa (B%), e o vertical, valores de frequencia de ocorrencia
(FO%).

No diagrama somente os nomes das 10 especies mais importantes irao aparecer do
lado dos retangulos, da decima primeira especie em diante serao representadas como
'Outras(...)'.

Os valores que aparecem do lado de cada nome de especie sao referentes a FO%.

Valor:

IIR.graf retorna uma representacao grafica para cada tipo de presa desejado e uma
lista em que cada componente e' um data.frame com os valores calculados de FN%,
FO%, B%, IIR e IIR% das especies de presa, para cada tipo de presa desejado.

Aviso:

A função e' interrompida, gerando mensagens de erros, se o primeiro objeto nao
for um data.frame, se o segundo argumento nao for fornecido ou se nao for um
vetor de caracteres, se o terceiro argumento nao for fornecido ou se nao for um
vetor numerico. Outra mensagem de erro sera gerada se o comprimento do vetor
'n.esp.graf' for diferente do comprimento do vetor 'presa'.

Caso o numero escolhido de especies de presa para serem representadas no diagrama
seja maior do que o disponivel, a funcao retorna uma mensagem de aviso, mas
continua rodando com o numero maximo de especies disponiveis.

Autor(es):

Laura Busin Campos
laura.campos@usp.br

Sao Paulo, junho de 2017

Referencias:

-Henrique-Garcia, J. 2010.Ecologia alimentar da toninha, Pontoporia blainvillei
(Mammalia - Pontoporiidae) ao longo de sua area de distribuicao. Dissertacao de
graduacao em oceanografia. Universidade do Vale do Itajaí - UNIVALI.Brasil.
-Pinkas, L. M.; Oliphant, S.; Iverson, I. L. K. Food habits of albacore, bluefin
tuna and bonito in Californian waters. California Fish and Game, v.152, p.1-105,
1971.

Veja tambem:

As seguintes funcoes podem ser uteis para entender os objetos de saida: list(),
data.frame(), plot().

Exemplos:

##1##
##Use como exemplo a planilha de dados "biomassa_iir.txt".
##Lendo o arquivo
tabel <- read.table("biomassa_iir.txt", head=T, sep="\t", dec=",")
##Aplicando a função para os tipos de presa peixe e cefalópode, com 18 e 3
#especies representadas, respectivamente, no diagrama.
IIR.graf(tabel,c("peixe","cefalopode"),c(18,3))
##Aplicando a funcao para os tipos de presa peixe e cefalópode, com um numero de
#especies maior do que o disponivel - retorna um aviso.
IIR.graf(tabel,c("peixe","cefalopode"),c(23,7))
##Aplicando a funcao sem um dos argumentos.
IIR.graf(tabel,c("peixe","cefalopode"))

##2##
##Criando uma planilha com dados aleatorios.
#Criando os vetores de individuos e tipo de presa, para colocar nas duas primeiras
#colunas do data.frame, de forma aleatoria com probabilidades de ocorrer tambem
#aleatorias.
individuos <- sample(1:50,size=1500,replace=TRUE,prob=sample(c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9),size=50,replace=TRUE))
tipo.presa <- sample(LETTERS[1:3],size=1500,replace=TRUE,prob=c(0.4,0.7,0.2))
#Criando um data.frame com os dois primeiros vetores e ordenando-o de acordo com o
#tipo de presa.
exemplo <- data.frame(individuos,tipo.presa)
exemplo.ord <- exemplo[order(exemplo$tipo.presa,decreasing=F),]
#Contando a quantidade que cada tipo de presa ocorre. 
conta <- table(tipo.presa)
#Construindo um conjunto aleatorio, com probabilidades aleatorias, de especies de
#presa para cada um dos tres tipos de presa.
tipo1 <- paste("Sp",sample(1:10,size=conta[[1]],replace=TRUE,prob=sample(c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9),size=10,replace=TRUE)),sep="")
tipo2 <- paste("Sp",sample(11:26,size=conta[[2]],replace=TRUE,prob=sample(c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9),size=16,replace=TRUE)),sep="")
tipo3 <- paste("Sp",sample(27:31,size=conta[[3]],replace=TRUE,prob=sample(c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9),size=5,replace=TRUE)),sep="")
#Criando o vetor de especie de presa usando os objetos criados no topico anterior
#colocando-o no data.frame.
especie.presa <- c(tipo1,tipo2,tipo3)
exemplo.ord [,3] <- especie.presa
#Criando um vetor de biomassa de forma aleatoria e colocando-o no data.frame.
biomassa.presa <- runif(1500,min=0,max=60)
exemplo.ord [,4] <- biomassa.presa
##Aplicando a funcao para os tres tipos de presa, com 10 especies representadas
#para cada um dos tipos de presa.
IIR.graf(exemplo.ord,c("A","B","C"),c(10,10,10))

Código da função

###############################
###############################
####### Funcao IIR.graf #######
###### Laura Busin Campos #####
###############################
###############################

IIR.graf <- function(arquivo,presa,n.esp.graf)
{
    
    ###Verificando se os argumentos de entrada estao na forma correta###

    if(class(arquivo)!="data.frame") #Se a classe do objeto 'arquivo' do primeiro argumento nao for um data.frame, fazer:
    {
        stop("Argumento 'arquivo' precisa ser um data.frame.\n") #Para a funcao e exibe a mensagem de erro.
    }

    if(missing(presa)) #Se o objeto 'presa' do segundo argumento estiver faltando na entrada da funcao, fazer:
    {
        stop("O(s) tipo(s) de presa nao foi(ram) fornecido(s).\n") #Para a funcao e exibe a mensagem de erro.
    }

    if(class(presa)!="character") #Se a classe do objeto 'presa' do segundo argumento nao for 'character', fazer:
    {
        stop("Argumento 'presa' precisa conter um vetor de caracter.\n") #Para a funcao e exibe a mensagem de erro.
    }

    if(missing(n.esp.graf)) #Se o objeto 'n.esp.graf' do terceiro argumento estiver faltando na entrada da funcao, fazer:
    {
        stop("O(s) numero(s) de especies para a representacao grafica nao foi(ram) fornecido(s).\n") #Para a funcao e exibe a mensagem de erro.
    }

    if(class(n.esp.graf)!="numeric") #Se a classe do objeto 'n.esp.graf' do terceiro argumento nao for 'numeric', fazer:
    {
        stop("Argumento 'n.esp.graf' precisa conter um vetor numerico.\n") #Para a funcao e exibe a mensagem de erro.
    }
    
    if(length(n.esp.graf)!=length(presa)) #Se o comprimento do vetor 'n.esp.graf' for diferente do vetor 'presa', fazer:
    {
        stop(paste("O comprimento do vetor 'n.esp.graf' deve ser o mesmo do vetor 'presa'.",length(n.esp.graf),"!=",length(presa))) #Para a funcao e exibe a mensagem de erro.
    }

    #Preparando o arquivo caso ele tenha NA's ou a coluna 1 nao esteja no formato correto.
    arquivo[,1] <- as.factor(arquivo[,1]) #Transformando em fator a coluna de individuos.
    arquivo[is.na(arquivo)] = 0 #Substituindo os NA's por zero.

    resulta <- list() #Criando a lista de resultado.

    for (i in 1:length(presa)) #Repetindo o processo ate' o contador chegar ao tamanho do vetor presa.
    { 
 
        ###Fazendo os cálculos###

        arq.presa <- arquivo[arquivo[,2]==presa[i],] #Separando apenas a presa que se vai calcular os parametros.

        Ni <- nrow(arq.presa) #Numero total de presas em todos os individuos
        toda.esp <- table(arq.presa[,3]) #Contando quanto de cada especie de presa existe nos estomagos dos individuos.
        ni <- toda.esp[toda.esp!=0] #Retirando do vetor os tipos de presa nao desejados.

        lev.ind <- levels(arq.presa[,1]) #Vendo os leveis do fator Individuos
        Ne <- length(lev.ind) #Contando quantos individuos tem no total.
        teste <- table(arq.presa[,1],arq.presa[,3]) #Contando quantas presas de cada especie em cada individuo.
        data.teste <- data.frame(teste) #Transformando 'teste' em data.frame.
        contagem <- table(data.teste$Var2,data.teste$Freq) #Contando quantas vezes cada especie ocorreu 0, 1 ,2 vezes...
        ne <- Ne-contagem[contagem[,1]!=Ne,1] #Subtraindo quantas vezes cada especie nao ocorreu nenhuma vez do numero total de individuos (numero de individuos que possuem a determinada presa).

        B.tot <- sum(arq.presa[,4]) #Somando todas as biomassas para chegar na biomassa total das presas de todos os individuos.
        B.toda.esp <- tapply(arq.presa[,4],arq.presa[,3],sum) #Calculando a biomassa de cada especie de presa em todos os individuos.
        B.presa <- B.toda.esp[!is.na(B.toda.esp)] #Retirando do vetor os tipos de presa nao desejados.

        tabela <- data.frame(Especie=names(ni)) #Criando um data.frame e colocando os nomes das espécies em sua primeira coluna.
        
        for (j in 1:length(ni)) #Repetindo o processo ate' o contador chegar ao tamanho do vetor ni.
        {
            FN <- round((ni[[j]]/Ni)*100,digits=3) #Calculando a FN%.
            tabela[j,2] <- FN #Colocando o resultado de FN na coluna 2 da tabela.

            FO <- round((ne[[j]]/Ne)*100,digits=3) #Calculando a FO%.
            tabela[j,3] <- FO #Colocando o resultado de FO na coluna 3 da tabela.

            B <- round((B.presa[[j]]/B.tot)*100,digits=3) #Calculando a B%.
            tabela[j,4] <- B #Colocando o resultado de B na coluna 4 da tabela.

            IIR <- round((FN+B)*FO,digits=3) #Calculando o IIR.
            tabela[j,5] <- IIR #Colocando o resultado de IIR na coluna 5 da tabela.
        }
    
        IIR.por <- round((tabela[,5]/sum(tabela[,5]))*100,digits=3) #Calculando o IIR%.
        tabela[,6] <- IIR.por #Colocando o resultado de IIR% na coluna 6 da tabela.

        colnames(tabela)<-c("ESPECIE","FN%","FO%","B%","IIR","IIR%") #Dando nomes para as colunas da tabela.
        tabela.ord <- tabela[order(tabela$IIR,decreasing=T),] #Ordenando a coluna IIR em ordem decrescente, para mostrar da presa mais importante para a menos importante.
        resulta[[i]] <- tabela.ord  #Colocando a tabela ordenada dentro da lista resulta.    

        ###Fazendo os gráficos###

        x11()
        par(mar=c(4,0.6,4,0),mgp=c(5,0.5,0)) #Definindo os parametros do grafico.
        
        if(n.esp.graf[i]>length(ni)) #Se o numero de especies escolhido para o grafico for maior que o numero de especies disponiveis, fazer:
        {
            #Mensagem de aviso caso isso aconteça.
            message(paste("Warning: Você escolheu um número maior de espécies do que o disponivel para",presa[i],"(",n.esp.graf[i],">",length(ni),")"))
            message(paste("Warning: Gráfico feito com o número máximo de espécies disponíveis (",length(ni),")\n"))

            plot(x=NULL,y=NULL, xlim=c(-100,200), ylim=c(sum(tabela.ord$FO),0),axes=FALSE, ann=FALSE) #Plotando uma area grafica com os limites definidos.
        }

        else #Se nao, fazer:
        {
            plot(x=NULL,y=NULL, xlim=c(-100,200), ylim=c(sum(tabela.ord$FO[1:n.esp.graf[i]]),0),axes=FALSE, ann=FALSE) #Plotando uma area grafica com os limites definidos.
        }
        
        axis(3,at=c(-100,-75,-50,-25,0,25,50,75,100),labels=c("100","75","50","25","0","25","50","75","100")) #Definindo os eixos do grafico.
        abline(v=0,lty=2) #Desenhando o eixo y (FO%).
        mtext("FO%",side=1,line=0.3,at=0,font=2) # Escrevendo a legenda do eixo y.
        mtext("FN%",side=3,line=2.3,at=0,font=2,adj=3.3) # Escrevendo a legenda do eixo x.
        mtext("B%",side=3,line=2.3,at=0,font=2,adj=-3.5) # Escrevendo a legenda do eixo x.
           
        rect(-tabela.ord$FN[1],tabela.ord$FO[1],tabela.ord$B[1],0) #Desenhando o retangulo da primeira especie no gráfico.
        text(x=(max(tabela.ord$B)+10),y=(tabela.ord$FO[1]/2),paste(tabela.ord$ESPECIE[1],"(",round(tabela.ord$FO[1],digits=2),")"),font=3,cex=0.7,adj=0) #Escrevendo o nome da primeira especie do lado do primeiro retangulo.

        if(n.esp.graf[i]>length(ni)) #Se o numero de especies de presa desejadas para a representacao grafica for maior que o numero de especies disponiveis, fazer:
        {
            for(k in 2:length(ni))#Repetindo o processo ate' o contador chegar no numero de especies disponiveis.
            {
                rect(-tabela.ord$FN[k],sum(tabela.ord$FO[1:k]),tabela.ord$B[k],sum(tabela.ord$FO[1:k])-tabela.ord$FO[k]) #Desenhando os retangulos das especies restantes.
                            
                if(k<=10) #Se o contador for menor que 10, fazer:
                {
                    text(x=(max(tabela.ord$B)+10),y=(sum(tabela.ord$FO[1:(k-1)])+tabela.ord$FO[k]/2),paste(tabela.ord$ESPECIE[k],"(",round(tabela.ord$FO[k],digits=2),")"),font=3,cex=0.7,adj=0) #Escrevendo o nome da especie do lado do retangulo.
                }
            }

            if(length(ni)>10) #Se o numero de especies disponiveis for maior que 10, fazer:
            {
                text(x=(max(tabela.ord$B)+10),y=(sum(tabela.ord$FO[1:10])+(sum(tabela.ord$FO[11:length(ni)])/2)),"Outras(...)",cex=0.7,adj=0) #Escrevendo "outras" para as espécies abaixo das 10 mais importantes.
            }   
        }

        else #Se nao, fazer:
        {
            if(n.esp.graf[i]>1) #Se o numero de especies escolhido para o grafico for maior que 1, fazer:
            {
                for(k in 2:n.esp.graf[i])#Repetindo o processo ate o contador chegar ao numero de especies desejado.
                {
                    rect(-tabela.ord$FN[k],sum(tabela.ord$FO[1:k]),tabela.ord$B[k],sum(tabela.ord$FO[1:k])-tabela.ord$FO[k]) #Desenhando os retangulos das especies restantes.
                
                    if(k<=10) #Se o contador for menor que 10, fazer:
                    {
                        text(x=(max(tabela.ord$B)+10),y=(sum(tabela.ord$FO[1:(k-1)])+tabela.ord$FO[k]/2),paste(tabela.ord$ESPECIE[k],"(",round(tabela.ord$FO[k],digits=2),")"),font=3,cex=0.7,adj=0) #Escrevendo o nome da especie do lado do retangulo.
                    }
                }
            }

            if(n.esp.graf[i]>10) #Se o número de espécies escolhido para o gráfico for maior que 10, fazer:
            {
                text(x=(max(tabela.ord$B)+10),y=(sum(tabela.ord$FO[1:10])+(sum(tabela.ord$FO[11:n.esp.graf[i]])/2)),"Outras(...)",cex=0.7,adj=0) #Escrevendo "outras" para as especies abaixo das 10 mais importantes.
            }
        }   
    }

names(resulta) <- presa #Dando os nomes aos itens da lista.
return(resulta) #Retornando a lista dos resultados.

}

Arquivos da função

Arquivo da função: funcao_iirgraf.r

Documentação da função: documentacao_iir.graf.txt

Arquivo para exemplo: biomassa_iir.txt

05_curso_antigo/r2017/alunos/trabalho_final/laura.campos/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)