[R-br] Indicação de valores fora do intervalo representado em um gráfico.

Benilton Carvalho beniltoncarvalho em gmail.com
Sexta Maio 17 16:21:06 BRT 2013


Wagner, ai' vai um exemplo do que eu faria... abraco, b


myboxplot <- function(x, ..., range=1.5, width=NULL, varwidth=FALSE,
    notch=FALSE, outline=TRUE, names, plot=TRUE, border=par("fg"),
    col=NULL, log="", pars=list(boxwex=0.8, staplewex =0.5, outwex=0.5),
    horizontal=FALSE, add=FALSE, at=NULL){

    out <- boxplot.default(x, ..., range=range, width=width,
                           varwidth=varwidth, notch=notch,
                           outline=outline, names=names, plot=plot,
                           border=border, col=col, log=log, pars=pars,
                           horizontal=horizontal, add=add, at=at)
    args <- list(x, ...)
    namedargs <- if (!is.null(attributes(args)$names))
attributes(args)$names != "" else rep_len(FALSE, length(args))
    groups <- if (is.list(x)) x else args[!namedargs]
    rgs <- sapply(groups, range)
    p <- .2
    lims <- args$ylim
    size <- diff(lims)*p
    if (horizontal){
        allLeft <- rgs[2,] < lims[1]
        if (any(allLeft)){
            idx <- which(allLeft)
            lapply(idx, function(i) arrows(lims[1]*(1-p), i, x1=lims[1]))
        }
        allRight <- rgs[1,] > lims[2]
        if (any(allRight)){
            idx <- which(allRight)
            lapply(idx, function(i) arrows(lims[2]*(1-p), i, x1=lims[2]))
        }
    }else{
        ## allLeft -> allBottom
        allLeft <- rgs[2,] < lims[1]
        if (any(allLeft)){
            idx <- which(allLeft)
            lapply(idx, function(i) arrows(y0=lims[1]*(1-p), x0=i,
y1=lims[1]))
        }
        ## allRight -> allTop
        allRight <- rgs[1,] > lims[2]
        if (any(allRight)){
            idx <- which(allRight)
            lapply(idx, function(i) arrows(y0=lims[2]*(1-p), x0=i,
y1=lims[2]))
        }
    }
    invisible(out)
}

myboxplot(c(1,2,2.6),c(4,5,6),c(-1.5,-3.5,-5),c(1.5,2.5,3.5),c(-2.1,0.2,1),ylim=c(-3,3),horizontal=T)
myboxplot(c(1,2,2.6),c(4,5,6),c(-1.5,-3.5,-5),c(1.5,2.5,3.5),c(-2.1,0.2,1),ylim=c(-3,3))




Em 16 de maio de 2013 20:23, Daniel Marcelino <dmarcelino em live.com>escreveu:

> Wagner, pensei que uma solução seria você desenhar uma seta na posição do
> box. Tudo o que você precisa saber são as coordenadas da figura.
>
>
> boxplot(c(1,2,2.6),c(4,5,6),c(-1.5,-3.5,-5),c(1.5,2.5,3.5),c(-2.1,0.2,1),ylim=c(-3,3),horizontal=T);
> polygon(c(0,1,1,3.4,1,1,0), c(1,1,0,2,4,3,3), col="black")
>
> Você também pode usar a funcão arrow para incluir uma seta.
>
> Daniel
>
>
> 2013/5/16 Wagner Arbex <wagner.arbex em embrapa.br>
>
>>  Olá, meus caros, boa tarde;
>>
>> Por favor, gostaria de saber se algum colega poderia me ajudar a resolver
>> o prob a seguir e que não me parece muito difícil, mas não achei uma
>> solução. O exemplo mínimo a seguir mostra cinco conjuntos de dados para
>> desenho de gráficos boxplot no intervalo [-3,3] (essa é a restrição que
>> cria o problema).
>>
>>
>> boxplot(c(1,2,2.6),c(4,5,6),c(-1.5,-3.5,-5),c(1.5,2.5,3.5),c(-2.1,0.2,1),ylim=c(-3,3),horizontal=T)
>>
>> O primeiro e o quinto conjuntos de dados não apresentam nenhum prob, pois
>> seus valores, (1,2,2.6) e (-2.1,0.2,1), estão compreendidos no intervalo
>> [-3,3]. O quarto apresenta seu último valor (3.5) fora do intervalo, mas a
>> representação de todo o quarto conjunto, (1.5,2.5,3.5), não é problema.
>> O mesmo ocorre com o terceiro conjunto de dados, (1.5,2.5,3.5), dois dos
>> seus valores estão fora do intervalo, mas sua representação não é problema.
>>
>> O problema ocorre qdo TODOS os valores do conjunto estão fora do
>> intervalo [-3,3], como o segundo conjunto, (4,5,6). Nesse caso, o conjunto
>> de dados não é representado na imagem.
>>
>> Meu prob é a necessidade de indicar que esses valores não estão no
>> intervalo que aparece no gráfico. P. ex., para esse caso do segundo
>> conjunto de dados, se aparecesse uma pequena seta, na segunda linha (onde o
>> gráfico seria desenhado), próxima à margem direita do gráfico, apontando
>> para direita, já faria essa indicação.
>>
>> Desde já, agradeço qq sugestão nesse sentido.
>>
>> []s e obrigado.
>>
>> --
>> Wagner Arbex, DSc
>> Bioinformática e Modelagem Matemática e Computacional de Biossistemas
>> Embrapa Gado de Leite
>> Empresa Brasileira de Pesquisa Agropecuária (Embrapa)
>> Juiz de Fora/MG
>>
>> wagner.arbex em embrapa.br
>> Tel.: +55 (32) 3311-7459 | Fax: +55 (32) 3311-7401
>> www.cnpgl.embrapa.br
>>
>>
>>
>>
>>
>> ____________________________________________________________________________
>>
>> Aviso de confidencialidade.
>>
>> Esta mensagem da Empresa Brasileira de Pesquisa Agropecuária (Embrapa),
>> empresa pùblica federal regida pelo disposto na Lei Federal no. 5.851, de 7
>> de dezembro de 1972, é enviada exclusivamente a seu destinatário e pode
>> conter informações confidenciais, protegidas por sigilo profissional. Sua
>> utilização desautorizada é ilegal e sujeita o infrator às penas da lei. Se
>> você a recebeu indevidamente, queira, por gentileza, reenviá-la ao
>> emitente, esclarecendo o equívoco.
>>
>> Confidentiality note
>>
>> This message from Empresa Brasileira de Pesquisa Agropecuária (Embrapa),
>> a government company established under Brazilian law (5.851/72), is
>> directed exclusively to its addressee and may contain confidential data,
>> protected under professional secrecy rules. Its unauthorized use is illegal
>> and may subject the transgressor to the law's penalties. If you are not the
>> addressee, please send it back, elucidating the failure.
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
>
> --
> \begin{signature}
> Daniel Marcelino
>dm.silva em umontreal.ca
> ☎ (514) 343 6111 #3799
> Skype: d.marcelino
> ✎ 3200 Jean Brillant,  Office C5071
> Montreal, QC; H3T 1N8
> Canada
> \end{signature}
>
> "Small steps toward a much better world"
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130517/61a1664b/attachment-0001.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: logo_embrapa_40anos.png
Tipo: image/png
Tamanho: 20846 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130517/61a1664b/attachment-0001.png>


Mais detalhes sobre a lista de discussão R-br