Saya tahu saya benar-benar terlambat dengan ini, tetapi saya pikir saya telah menemukan solusi yang agak sederhana.
Jika Anda melihat-lihat kode sumber floating.pie()
(misalnya dengan menelepon getAnywhere(floating.pie)
), Anda akan melihat bahwa itu menggunakan pendekatan yang sangat sederhana namun efektif: menggambar segmen pai sebagai poligon. Jika yang Anda inginkan dari diagram batang adalah bilah (tanpa label, sumbu, dll.), Anda dapat mengikuti pendekatan yang sama dan menulis fungsi Anda sendiri. Ini versi cepat dan kotor:
# 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
adalah untuk nilai-nilai yang diwakili oleh bar
xllc
dan yllc
tentukan posisi sudut kiri bawah bilah kiri dalam sistem koordinat apa pun yang Anda gunakan
barwidth
dan maxheight
digunakan untuk menskalakan ukuran bar
Berikut ini demo dengan sp
plot dasar . Saya tidak berpikir saya pernah bekerja dengan plotrix
sebelumnya, tetapi berdasarkan pada cara floating.pie
kerjanya, saya berasumsi bahwa ini juga harus bekerja 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)
Hasilnya terlihat seperti ini:
ggsubplot
paket, tetapi sekarang sudah usang dan tidak akan berfungsi (seperti yang Anda sebutkan). Mungkin posting ini bisa menjadi titik awal: stackoverflow.com/questions/36063043/…