2014-01-15 6 views
2

나는 다음과 같은 사항이 있습니다나누기 세계지도

> dd 
      area   Lon  Lat 
1 2530000.00 -84.744000 39.57500 
2 5300000.00 -3.200000 54.66000 
3  100000.00 -2.970000 54.40000 
4  10632.91 -89.494500 46.23046 
5  190000.00 -2.923600 54.50630 
6  239000.00 -3.260200 54.42850 
7  930000.00 -3.264400 54.53120 
8  223045.80 12.303000 55.93400 
9 3236000.00 -3.691800 52.94930 
10  94000.00 -3.028400 56.49910 
11 4700000.00 -3.075300 54.33810 
12 400000.00 -3.819200 52.99930 
13 258924.72 -89.473300 46.21046 
14 340000.00 -89.612000 46.00200 
15  5524.00 -89.606000 46.00800 
16  57000.00 -3.962000 52.79470 
17 170000.00 -3.025900 54.42720 
18 3000000.00 -3.381200 54.52220 
19 23674200.00 18.587000 59.84600 
20 1000000.00 -2.990000 54.36000 
21 140000.00 -3.990100 57.54240 
22 110000.00 9.452022 56.01752 
23 640000.00 -3.019500 54.44840 
24 100285.00 12.303000 55.98500 
25 664549.00 9.391000 56.02000 
26 1513724.00 -79.135600 45.37960 
27  7862.06 -89.505900 46.24369 
28 60900000.00 10.070000 45.72400 
29 163268000.00 35.588000 32.81700 
30  2468.00 -89.678000 45.99500 
31  51000.00 -85.349000 42.41100 
32  51000.00 -4.041800 53.01420 
33 1057000.00 -4.546000 56.21300 
34  93000.00 -5.429600 57.49210 
35 1114000.00 -4.281000 55.00210 
36  99000.00 -3.321500 56.95920 
37 111000.00 -4.509200 56.22730 
38 71000000.00 -4.616000 56.10500 
39 600000.00 -3.350000 54.58000 
40 38282400.00 -89.424000 43.10500 
41  58818.50 -89.521300 46.25745 
42  37833.00 -89.722000 45.99800 
43  4624.00 -89.705000 46.00500 
44 970000.00 -4.131900 53.12800 
45  3000.00   NA  NA 
46  10000.00 -2.990800 54.37210 
47 127000.00 -4.430400 55.09330 
48 79855500.00 176.267000 -38.08200 
49 34600000.00 176.419000 -38.03700 
50 500000.00 -2.386400 53.35400 
51 19800000.00 -122.094000 47.60000 
52  35500.00 -5.448100 57.27850 
53 100500.00 -5.445000 57.59120 
54  96400.00 -5.392200 57.51680 
55  14400.00 -5.305400 57.25070 
56  16400.00 -5.103700 57.17190 
57 311000.00 -5.024400 57.71260 
58  75500.00 -4.954900 57.49550 
59  53600.00 -4.936500 57.45240 
60 216100.00 -4.954400 57.68130 
61  56000.00 -4.935600 57.80980 
62 144600.00 -3.538200 56.88500 
63  43000.00 -3.299100 54.48120 
64 14918400.00 -89.672000 46.02900 
65 618453.00 -89.700000 46.00800 
66 820000.00 -4.031300 55.79300 
67 4100000.00 3.630000 52.88000 
68  566.00 -89.431000 46.00300 
69  10478.00 -89.686000 46.04100 
70 8900000.00 -2.889000 54.57610 
71 2350000.00 -122.335100 47.63900 
72 54000000.00 177.088000 -38.76800 
73 88000000.00 -122.257000 47.61800 
74  48657.67 -89.502830 46.23562 
75 6700000.00 -2.930000 54.35000 
76 1300000.00 -89.417800 43.05370 
77 164000.00 -85.383000 42.39800 

을 나는 이러한 점의 세계지도 생성 한 : 결과

library(ggplot2) 
library(maps) 
mdat <- map_data('world') 

str(mdat) 
ggplot() + 
    geom_polygon(dat=mdat, aes(long, lat, group=group), fill="grey50") + 
    geom_point(data=dd, 
      aes(x = Lon, y = Lat, size=`area`), col="red") 

을 :

enter image description here

그러나 여기에서 6 개의 별개의 r egions :
1. 워싱턴 2. Great Lakes Region 3. 영국. 4. 뉴질랜드 5. 유럽의 나머지 지역. 6. 이스라엘

지역을 더 잘 보여주기 위해이지도를 6 개의 패널로 나누는 가장 좋은 방법은 무엇입니까? 빨간색 원은 특정 변수의 크기가 다르다는 것을 나타내며 각 패널에 대해 별도의 범례가 아닌 패널간에 크기를 전달하고 싶습니다. 각 패널은 세계의 다른 지역을 대표해야하지만, 위의 규정

나는 결국,

enter image description here

같은 것을 생산의 기대했다.

+0

프리 스케일로면을 그리는 것과 조금 같지만 맵으로 할 수 있을지 모르겠습니다. – CMichael

답변

2

지도 때문에 불행하게도 ggplot의 자유 눈금이 작동하지 않습니다. 참조 (

  1. 만 관심있는 영역을 음모 ggplot 요청이 힘든,하지만 작동 : 내가 수동으로 각면에 대한 스케일을 지정할 수있는 방법을 알고하지 않기 때문에 세 가지 가능한 솔루션이 있습니다. 여기 솔루션)
  2. 음주 여러 중 하나)를 수동으로 grid 또는 (재 조립 한 후 지역에 따라 반복 수동 저울을 지정하고, ggplot 플롯
  3. 대부분의지도 데이터를 얻을 수있을 것이다 우아하고 "쿠키 그것은 커터" 폴리곤을 적절하게 닫은 상태에서 원하는 영역 만 남겨 두십시오.

    library(ggplot2) 
    library(maps) 
    df <- df[complete.cases(df),] 
    df$dist.london <- sqrt((df$Lat - 51.5)^2 + (df$Lon - 0.1275)^2) 
    df$rg <- cut(df$dist.london, c(0, 10, 35, 65, 100, 150, 300), include.lowest=T) 
    levels(df$rg) <- c("UK", "RoE", "Israel", "Midwest", "US West", "New Zealand") 
    
    RoE <- c("France", "Germany", "Denmark", "Spain", "Italy", "Belgium", "Netherlands") 
    West <- tolower(c("Washington", "Oregon", "California", "Nevada", "Idaho")) 
    Lakes <- tolower(c("Michigan", "Illinois", "Wisconsin", "Indiana", "Ohio", "New York")) 
    mdat <- rbind(
        map_data('world', c("UK", RoE, "Israel", "New Zealand")), 
        map_data("state", c(West, Lakes)) 
    ) 
    reg.map <- rbind(
        cbind(RoE, "RoE"), 
        cbind(West, "US West"), 
        cbind(Lakes, "Midwest"), 
        cbind("UK", "UK"), 
        cbind("Israel", "Israel"), 
        cbind("New Zealand", "New Zealand") 
    ) 
    mdat$rg <- factor(reg.map[match(mdat$region, reg.map[, 1]), 2], levels=levels(df$rg)) 
    mdat <- subset(mdat, !(rg == "RoE" & (lat < 35 | long < -20))) 
    mdat <- subset(mdat, !(rg == "UK" & (lat < 50 | long < -20))) 
    mdat <- subset(mdat, !(rg == "New Zealand" & (lat > -20 | long < 100))) 
    
    ggplot(data=df) + 
        geom_polygon(dat=mdat, aes(long, lat, group=group), fill="grey50", color="grey10") + 
        geom_point(aes(x = Lon, y = Lat, size=`area`), col="red") + 
        facet_wrap(~ rg, scales="free") 
    

    enter image description here

    :

3. 더 좋을 것이지만, 쿠키 cuttering에 대한 알고리즘은 아마 더 이상 위의 hackish # 1 솔루션보다 나를 걸릴 것이다, 그래서 여기에 # 1 나는 큰 호수 지역과 RoE와 함께 게으르다. 그러나 당신은 생각을 얻는다.