Sé que realmente llego tarde con esto, pero creo que he encontrado una solución bastante simple.
Si observa el código fuente de floating.pie()
(por ejemplo, llamando getAnywhere(floating.pie)
), notará que utiliza un enfoque muy simple pero efectivo: dibujar los segmentos circulares como polígonos. Si todo lo que desea de sus gráficos de barras son las barras (sin etiquetas, ejes, etc.), puede seguir el mismo enfoque y escribir su propia función. Aquí hay una versión rápida y sucia:
# the function
mapbars <- function (x, xllc = 0, yllc = 0, barwidth=1, maxheight=10){
# calculate how long each bar needs to be
bars <- (x/max(x)) * maxheight
# get some quick colors
col <- rainbow(length(x))
for(i in 1:length(x)){
# figure out x- and y coordinates for the corners
leftx <- xllc + ((i-1) * barwidth)
rightx <- leftx + barwidth
bottomy <- yllc
topy <- yllc + bars[i]
# draw the bar
polygon(x=c(leftx, rightx, rightx, leftx, leftx),
y=c(bottomy, bottomy, topy, topy, bottomy),
col=col[i])
}
}
x
es para que los valores sean representados por las barras
xllc
y yllc
especifique la posición de la esquina inferior izquierda de la barra izquierda en cualquier sistema de coordenadas que esté utilizando
barwidth
y maxheight
se usan para escalar el tamaño de las barras
Aquí hay una demostración con una sp
trama básica . No creo que haya trabajado plotrix
antes, pero en función de cómo floating.pie
funciona, asumiría que esto también debería funcionar plotrix
.
library(sp)
library(maptools) # just for easy access to a background map
# load some country borders as a background
data("wrld_simpl")
plot(wrld_simpl)
# zoom on a bit …
mexico <- subset(wrld_simpl, NAME=="Mexico")
plot(mexico, axes=TRUE)
# data for the bars
x1 <- c(4, 7, 1, 2)
# plot
plot(mexico, axes=TRUE)
mapbars(x=x1, xllc=-110, yllc=20, barwidth=.5, maxheight=5)
legend(x="topright", pch=22, col="black", pt.bg=rainbow(x1), legend=c("foo", "bar", "baz", "foobar"))
# add another one:
x2 <- c(9, 21, 64, 45, 33, 43, 12, 7)
mapbars(x=x2, xllc=-100, yllc=25, barwidth=.2, maxheight=2)
El resultado se ve así:
ggsubplot
paquete, pero ahora está en desuso y no funcionará (como mencionaste). Quizás esta publicación pueda ser un punto de partida: stackoverflow.com/questions/36063043/…