From f9698cdec1ec977af9fc6b9f810c807796e2a2f4 Mon Sep 17 00:00:00 2001 From: Eduardo Junior <edujrrib@gmail.com> Date: Mon, 2 May 2016 00:47:43 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20fun=C3=A7=C3=A3o=20panel.beeswarm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NAMESPACE | 1 + R/panel.beeswarm.R | 59 +++++++++++++++++++++++++++++++++++++++++++ man/panel.beeswarm.Rd | 48 +++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 R/panel.beeswarm.R create mode 100644 man/panel.beeswarm.Rd diff --git a/NAMESPACE b/NAMESPACE index eb464be..50414ab 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -3,6 +3,7 @@ export(apc) export(cmp) export(convergencez) +export(panel.beeswarm) export(panel.cbH) export(prepanel.cbH) import(bbmle) diff --git a/R/panel.beeswarm.R b/R/panel.beeswarm.R new file mode 100644 index 0000000..1da9753 --- /dev/null +++ b/R/panel.beeswarm.R @@ -0,0 +1,59 @@ +#' @name panel.beeswarm +#' @aliases panel.beeswarm +#' @export +#' @author Walmes Zeviani +#' @title Função para Gráfico de Dispersão BeesWarm com a Lattice +#' +#' @description Essa função permite a construção de gráficos de +#' dispersão unidimensionais similares a função +#' \code{\link{stripchart}}. Porém com pontos de mesmas coordenadas +#' exibidos lado a lado e não sobrepostos. +#' +#' @param x,y,subscripts,... Argumentos passados para a +#' função \code{\link[lattice]{xyplot}}. +#' +#' @param r Valor para espaçamento entre os pontos de mesmas +#' coordenadas. +#' +#' @return Painel \code{xyplot} padrão, com as coordenadas \code{x} +#' devidamente corrigidas para agrupamento lado a lado. +#' +#' @import lattice +#' +#' @references Aron Eklund (2016). beeswarm: The Bee Swarm Plot, an +#' Alternative to Stripchart. R package version +#' 0.2.3. \url{https://CRAN.R-project.org/package=beeswarm} +#' @examples +#' library(lattice) +#' +#' set.seed(2016) +#' da <- data.frame(x = rep(letters[1:5], 10), y = rpois(50, 5)) +#' +#' xyplot(y ~ x, data = da, jitter.x = TRUE) +#' xyplot(y ~ x, data = da, panel = panel.beeswarm, r = 0.1) +#' xyplot(y ~ x, data = da, panel = panel.beeswarm, r = 0.05) +#' +#' xyplot(drat ~ carb | am, data = mtcars, jitter.x = TRUE) +#' xyplot(drat ~ carb | am, data = mtcars, panel = panel.beeswarm, r = 0.2) +#' + +panel.beeswarm <- function(x, y, subscripts, r, ...) { + xx <- x + yy <- y + aux <- by(cbind(yy, xx, subscripts), xx, function(i) { + or <- order(i[, 1]) + ys <- i[or, 1] + yt <- table(ys) + dv <- sapply(unlist(yt), function(j) { + seq(1, j, l = j) - (j + 1)/2 + }) + if (!is.list(dv)) { + dv <- as.list(dv) + } + xs <- i[or, 2] + r * do.call(c, dv) + cbind(x = xs, y = ys, subscripts[or]) + }) + aux <- do.call(rbind, aux) + panel.xyplot(aux[, 1], aux[, 2], subscripts = aux[, 3], ...) +} + diff --git a/man/panel.beeswarm.Rd b/man/panel.beeswarm.Rd new file mode 100644 index 0000000..fb2e584 --- /dev/null +++ b/man/panel.beeswarm.Rd @@ -0,0 +1,48 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/panel.beeswarm.R +\name{panel.beeswarm} +\alias{panel.beeswarm} +\title{Função para Gráfico de Dispersão BeesWarm com a Lattice} +\usage{ +panel.beeswarm(x, y, subscripts, r, ...) +} +\arguments{ +\item{x, y, subscripts, ...}{Argumentos passados para a +função \code{\link[lattice]{xyplot}}.} + +\item{r}{Valor para espaçamento entre os pontos de mesmas +coordenadas.} +} +\value{ +Painel \code{xyplot} padrão, com as coordenadas \code{x} + devidamente corrigidas para agrupamento lado a lado. +} +\description{ +Essa função permite a construção de gráficos de + dispersão unidimensionais similares a função + \code{\link{stripchart}}. Porém com pontos de mesmas coordenadas + exibidos lado a lado e não sobrepostos. +} +\examples{ +library(lattice) + +set.seed(2016) +da <- data.frame(x = rep(letters[1:5], 10), y = rpois(50, 5)) + +xyplot(y ~ x, data = da, jitter.x = TRUE) +xyplot(y ~ x, data = da, panel = panel.beeswarm, r = 0.1) +xyplot(y ~ x, data = da, panel = panel.beeswarm, r = 0.05) + +xyplot(drat ~ carb | am, data = mtcars, jitter.x = TRUE) +xyplot(drat ~ carb | am, data = mtcars, panel = panel.beeswarm, r = 0.2) + +} +\author{ +Walmes Zeviani +} +\references{ +Aron Eklund (2016). beeswarm: The Bee Swarm Plot, an + Alternative to Stripchart. R package version + 0.2.3. \url{https://CRAN.R-project.org/package=beeswarm} +} + -- GitLab