나는 이것이 정말로 늦었다는 것을 알고 있지만, 나는 오히려 간단한 해결책을 찾았다 고 생각합니다.
소스 코드를 살펴보면 floating.pie()
(예 :을 호출 getAnywhere(floating.pie)
하여) 원형 세그먼트를 다각형으로 그리는 매우 간단하지만 효과적인 방법을 사용한다는 것을 알 수 있습니다. 막 대형 차트에서 원하는 것이 막대 (레이블, 축 등 없음) 인 경우 동일한 방법을 사용하여 고유 한 기능을 작성할 수 있습니다. 빠르고 더러운 버전은 다음과 같습니다.
# 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
값은 막대로 표시됩니다.
xllc
그리고 yllc
당신이 사용하는 좌표계 어떤에서 왼쪽 줄의 왼쪽 하단 모서리의 위치를 지정
barwidth
과 maxheight
바의 크기를 확장에 사용됩니다
다음은 기본 sp
기반 플롯 이있는 데모입니다 . 나는 plotrix
전에 함께 일한 적이 없다고 생각 하지만 floating.pie
작동 방식에 따라 이것도 작동해야한다고 가정합니다 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)
결과는 다음과 같습니다.
ggsubplot
패키지 로 처리하는 방법도 알았지 만 이제는 더 이상 사용되지 않으며 언급 한대로 작동하지 않습니다. 아마도이 게시물이 시작점이 될 수 있습니다. stackoverflow.com/questions/36063043/…