Je sais que je suis vraiment en retard avec cela, mais je pense avoir trouvé une solution assez simple.
Si vous regardez le code source de floating.pie()
(par exemple en appelant getAnywhere(floating.pie)
), vous remarquerez qu'il utilise une approche très simple mais efficace: dessiner les segments de tarte sous forme de polygones. Si tout ce que vous voulez de vos graphiques à barres est les barres (pas d'étiquettes, d'axes, etc.), vous pouvez suivre la même approche et écrire votre propre fonction. Voici une version rapide et sale:
# 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
est pour que les valeurs soient représentées par les barres
xllc
et yllc
spécifiez la position du coin inférieur gauche de la barre de gauche dans le système de coordonnées que vous utilisez
barwidth
et maxheight
sont utilisés pour mettre à l'échelle la taille des barres
Voici une démo avec une sp
intrigue basique . Je ne pense pas avoir déjà travaillé avec plotrix
, mais en fonction de la façon dont cela floating.pie
fonctionne, je suppose que cela devrait également fonctionner 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)
Le résultat ressemble à ceci:
ggsubplot
package, mais il est désormais obsolète et ne fonctionnera pas (comme vous l'avez mentionné). Peut-être que ce message peut être un point de départ: stackoverflow.com/questions/36063043/…