So di essere davvero in ritardo con questo, ma penso di aver trovato una soluzione piuttosto semplice.
Se dai un'occhiata al codice sorgente di floating.pie()
(ad esempio chiamando getAnywhere(floating.pie)
), noterai che utilizza un approccio molto semplice ma efficace: disegnare i segmenti di torta come poligoni. Se tutto ciò che desideri dai tuoi grafici a barre sono le barre (senza etichette, assi, ecc.), Puoi seguire lo stesso approccio e scrivere la tua funzione. Ecco una versione rapida e sporca:
# 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
è per i valori che devono essere rappresentati dalle barre
xllc
e yllc
specifica la posizione dell'angolo inferiore sinistro della barra di sinistra in qualsiasi sistema di coordinate che stai utilizzando
barwidth
e maxheight
vengono utilizzati per ridimensionare le dimensioni delle barre
Ecco una demo con una sp
trama di base. Non credo di aver lavorato plotrix
prima, ma in base a come floating.pie
funziona, suppongo che anche questo dovrebbe funzionare 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)
Il risultato è simile al seguente:
ggsubplot
pacchetto, ma ora è deprecato e non funzionerà (come hai detto). Forse questo post può essere un punto di partenza: stackoverflow.com/questions/36063043/…