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