Tôi đang trong quá trình xây dựng một ggplot
bản đồ dân số choropleth trong các khu vực hành chính ở xứ Wales. Tôi đã tải xuống dữ liệu Ranh giới dòng từ Khảo sát bản đồ và trích xuất những gì có vẻ là shapefile đúng (Community_ward_region.shp). Sử dụng R, tôi đã có được như đọc trong shapefile.
require(maptools)
shape <- readShapePoly(wards)
str(shape)
Cung cấp cho tôi đầu ra đầy hứa hẹn này:
Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
..@ data :'data.frame': 1690 obs. of 4 variables:
.. ..$ NAME : Factor w/ 1507 levels "Abbey Cwmhir",..: 969 90 111 200 441 477 1455 249 255 305 ...
.. ..$ DESCRIPTIO: Factor w/ 4 levels "COMMUNITY","COMMUNITY WARD",..: 2 2 1 1 2 2 2 2 1 1 ...
.. ..$ COMMUNITY : Factor w/ 858 levels "Abbey Cwmhir",..: 67 67 81 128 152 152 152 152 157 190 ...
.. ..$ FILE_NAME : Factor w/ 23 levels "ABERTAWE_-_SWANSEA",..: 1 1 1 1 1 1 1 1 1 1 ...
.. ..- attr(*, "data_types")= chr [1:4] "C" "C" "C" "C"
..@ polygons :List of 1690
.. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
.. .. .. ..@ Polygons :List of 1
.. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
.. .. .. .. .. .. ..@ labpt : num [1:2] 259009 188524
.. .. .. .. .. .. ..@ area : num 1923892
.. .. .. .. .. .. ..@ hole : logi FALSE
.. .. .. .. .. .. ..@ ringDir: int 1
.. .. .. .. .. .. ..@ coords : num [1:1629, 1:2] 259413 259420 259427 259427 259432 ...
.. .. .. ..@ plotOrder: int 1
.. .. .. ..@ labpt : num [1:2] 259009 188524
.. .. .. ..@ ID : chr "0"
.. .. .. ..@ area : num 1923892
Bây giờ nếu tôi làm điều này:
bar <- fortify(shape, region = "NAME")
Tôi nhận được một khung dữ liệu đẹp được gọi là bar
trông khá giống như tôi mong đợi:
> str(bar)
'data.frame': 4744053 obs. of 7 variables:
$ long : num 302962 302970 302974 303013 303015 ...
$ lat : num 280066 280076 280078 280097 280105 ...
$ order: int 1 2 3 4 5 6 7 8 9 10 ...
$ hole : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ piece: Factor w/ 29 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
$ group: Factor w/ 1762 levels "Abbey Cwmhir.1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ id : chr "Abbey Cwmhir" "Abbey Cwmhir" "Abbey Cwmhir" "Abbey Cwmhir" ..
Tuy nhiên, đây là một khung dữ liệu lớn và ggplot
hết hiệu lực khi cố gắng hiển thị nó. Trong thực tế, tôi chỉ muốn nhìn vào một khu vực tại một thời điểm. Có vẻ như FILE_NAME
yếu tố trong đối tượng hình dạng là những gì tôi muốn vì nó chủ yếu tương ứng với các hạt và các khu đô thị lớn.
> unique(shape@data$FILE_NAME)
[1] ABERTAWE_-_SWANSEA
[2] BLAENAU_GWENT_-_BLAENAU_GWENT
[3] BRO_MORGANNWG_-_THE_VALE_OF_GLAMORGAN
[4] CAERDYDD_-_CARDIFF
[5] CAERFFILI_-_CAERPHILLY
[6] CASNEWYDD_-_NEWPORT
[7] CASTELL-NEDD_PORT_TALBOT_-_NEATH_PORT_TALBOT
[8] CONWY_-_CONWY
[9] GWYNEDD_-_GWYNEDD
[10] MERTHYR_TUDFUL_-_MERTHYR_TYDFIL
[11] PEN-Y-BONT_AR_OGWR_-_BRIDGEND
[12] POWYS_-_POWYS
[13] RHONDDA_CYNON_TAF_-_RHONDDA_CYNON_TAFF
[14] SIR BENFRO - PEMBROKESHIRE
[15] SIR_BENFRO_-_PEMBROKESHIRE
[16] SIR_CEREDIGION_-_CEREDIGION
[17] SIR_DDINBYCH_-_DENBIGHSHIRE
[18] SIR_FYNWY_-_MONMOUTHSHIRE
[19] SIR_GAERFYRDDIN_-_CARMARTHENSHIRE
[20] SIR_YNYS_MON_-_ISLE_OF_ANGLESEY
[21] SIR_Y_FFLINT_-_FLINTSHIRE
[22] TOR-FAEN_-_TORFAEN
[23] WRECSAM_-_WREXHAM
23 Levels: ABERTAWE_-_SWANSEA ... WRECSAM_-_WREXHAM
H: Làm thế nào tôi chỉ có thể chọn một tập hợp con của dữ liệu từ shape
đối tượng tôi trích xuất từ shapefile? Ví dụ, chỉ có các POWYS_-_POWYS
bộ phận? Nếu bằng cách nào đó tôi có thể bao gồm FILE_NAME
trong khung dữ liệu được tạo fortify
thì tôi có thể dễ dàng đặt lại bar
khung dữ liệu nhưng tôi không biết làm thế nào để làm điều đó. Hoặc có một cách để sử dụng fortify
để chỉ trích xuất các phần của đối tượng?