R의지도에 막대 차트를 플로팅 하시겠습니까?


14

나는 미국의 주 수준지도를 그리는 데 사용 plotrix하고 R있습니다. floating.pie각 상태에 파이 차트를 배치 하는 탁월한 기능 이 있습니다.

plotrix패키지 내에 각 상태에서 막대 차트를 표시 하는 비슷한 기능이 있는지 궁금합니다 . (나는 막대 차트를 다루는 문서와 기능을 살펴 보았지만이 가능성이있는 것 같지는 않지만 확실하게 알고 싶었습니다.) 가능한 경우 plotrix 패키지 내에서 작업하는 것을 선호하지만 자유롭게 이름을 지정하십시오. 다른 패키지.

예를 들어, 이와 비슷한지도를 만드는 데 관심이 있습니다 (미국의 경우).

여기에 이미지 설명을 입력하십시오

내 미국지도의 경우 각 주마다 하나씩 50 개의 막대 차트가 있습니다.

/programming/20465070/barplots-on-a-map 에서이 맵을 얻었 지만 ggsubplot이 R 버전에서 작동하지 않는 것 같습니다 (다른 사람들이 게시물에서 말한 것과 유사 함) ).


2
ggsubplot패키지 로 처리하는 방법도 알았지 만 이제는 더 이상 사용되지 않으며 언급 한대로 작동하지 않습니다. 아마도이 게시물이 시작점이 될 수 있습니다. stackoverflow.com/questions/36063043/…
Andre Silva

그러한 기능이 존재하는지 확인하려면 plotrix의 문서를 참조하십시오. 그런 다음 plottrix 제작자에게 문의하십시오.
Mox

답변:


1

나는 이것이 정말로 늦었다는 것을 알고 있지만, 나는 오히려 간단한 해결책을 찾았다 고 생각합니다.

소스 코드를 살펴보면 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당신이 사용하는 좌표계 어떤에서 왼쪽 줄의 왼쪽 하단 모서리의 위치를 지정
  • barwidthmaxheight바의 크기를 확장에 사용됩니다

다음은 기본 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)

결과는 다음과 같습니다. 위 코드에서 나온 예제 맵


mapbars line> mapbars (x = x1, xllc = -110, yllc = 40, barwidth = .5, maxheight = 5)를 실행할 때이 오류가 발생합니다. mapbars (x = x1, xllc = -110, yllc = 40, barwidth = 0.5, maxheight = 5) : 함수 "mapbars"를 찾을 수 없음
324

내 대답의 첫 부분에서 코드를 실행하지 않은 것 같습니다. 이 함수 mapbars는 첫 번째 큰 코드 블록에 정의되어 mapbars <- function (x, xllc = 0, ...있습니다. 새로운 명령을 "가르치려면"전체 코드 섹션을 먼저 실행해야합니다.
내 수건은 어디에 있습니까

-1

ggplot2ggvis 는 맵에 플롯을 표시하는 데 도움이되는 두 개의 라이브러리입니다. ggplot2에서는 맵에 버블을 그릴 수 있으며 aes ()에 버블의 크기와 색상과 관련이없는 좌표를 지정하면됩니다. 막대 차트와 관련하여 막대 차트 위치와 막대 차트의 높이와 너비에 대해 적어도 두 쌍의 x와 y를 할당해야합니다. 다시 말해, 막대에 대한 4 개의 모서리 좌표를 알아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.