Tôi biết tôi thực sự muộn với điều này, nhưng tôi nghĩ rằng tôi đã tìm thấy một giải pháp khá đơn giản.
Nếu bạn có một cái nhìn về mã nguồn của floating.pie()
(ví dụ bằng cách gọi getAnywhere(floating.pie)
), bạn sẽ nhận thấy rằng nó sử dụng một cách tiếp cận rất đơn giản nhưng hiệu quả: vẽ các phân đoạn hình tròn như đa giác. Nếu tất cả những gì bạn muốn từ biểu đồ thanh của bạn là các thanh (không có nhãn, trục, v.v.), bạn có thể làm theo cùng một cách tiếp cận và viết chức năng của riêng bạn. Đây là một phiên bản nhanh và bẩn:
# 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
là cho các giá trị được đại diện bởi các thanh
xllc
và yllc
chỉ định vị trí của góc dưới bên trái của thanh bên trái trong bất kỳ hệ tọa độ nào bạn đang sử dụng
barwidth
và maxheight
được sử dụng để nhân rộng kích thước của các thanh
Dưới đây là một bản demo với một cơ bản sp
cốt truyện dựa trên. Tôi không nghĩ rằng tôi đã làm việc với plotrix
trước đây, nhưng dựa trên cách làm floating.pie
việc, tôi cho rằng điều này cũng sẽ làm việc với 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)
Kết quả trông như thế này:
ggsubplot
gói, nhưng bây giờ nó không được dùng nữa và nó sẽ không hoạt động (như bạn đã đề cập). Có lẽ bài đăng này có thể là điểm khởi đầu: stackoverflow.com/questions/36063043/ Kẻ