library(RSQLite)
library(DBI)
library(tidyverse)
SD_P3
Package connect to sqlite
Data
<- dbConnect (SQLite(), "C:\\Users\\User\\Documents\\Data\\Chinook_Sqlite.sqlite")
chinook dbListTables(chinook)
[1] "Album" "Artist" "Customer" "Employee"
[5] "Genre" "Invoice" "InvoiceLine" "MediaType"
[9] "Playlist" "PlaylistTrack" "Track" "Track_Media12"
[13] "Track_Media13" "Track_Media14"
<- tbl(src = chinook, "Customer") #mengakses tabel kebentuk dataframe customer
SQL Query dplyr
<- tbl(src=chinook,"Invoice")
invoice <- invoice %>%
invoice_country group_by(BillingCountry) %>%
summarize(mean_invoice=mean(Total))
show_query(invoice_country)
Warning: Missing values are always removed in SQL aggregation functions.
Use `na.rm = TRUE` to silence this warning
This warning is displayed once every 8 hours.
<SQL>
SELECT `BillingCountry`, AVG(`Total`) AS `mean_invoice`
FROM `Invoice`
GROUP BY `BillingCountry`
untuk menampilkan hasil operasi diatas dalam R, kita perlu melakukan konversi ke data.frame terlebih dahulu.
%>% as.data.frame() %>% View() invoice_country
Penggabungan Dataset
Data
<- tbl(src=chinook,"customer") %>%
res select(CustomerId,FirstName,LastName,Country) %>%
left_join(y = tbl(src=chinook,"Invoice") %>% select(CustomerId,Total) ,
by = "CustomerId")
glimpse(res)
Rows: ??
Columns: 5
Database: sqlite 3.46.0 [C:\Users\User\Documents\Data\Chinook_Sqlite.sqlite]
$ CustomerId <int> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,…
$ FirstName <chr> "Luís", "Luís", "Luís", "Luís", "Luís", "Luís", "Luís", "Le…
$ LastName <chr> "Gonçalves", "Gonçalves", "Gonçalves", "Gonçalves", "Gonçal…
$ Country <chr> "Brazil", "Brazil", "Brazil", "Brazil", "Brazil", "Brazil",…
$ Total <dbl> 3.98, 3.96, 5.94, 0.99, 1.98, 13.86, 8.91, 1.98, 13.86, 8.9…
data("band_members",package = "dplyr")
data("band_instruments",package = "dplyr")
data("band_instruments2",package = "dplyr")
Inner join
inner_join(band_members,band_instruments,by="name")
# A tibble: 2 × 3
name band plays
<chr> <chr> <chr>
1 John Beatles guitar
2 Paul Beatles bass
%>%
band_members inner_join(band_instruments,by = "name")
# A tibble: 2 × 3
name band plays
<chr> <chr> <chr>
1 John Beatles guitar
2 Paul Beatles bass
Left Join
%>% left_join(band_instruments) band_members
Joining with `by = join_by(name)`
# A tibble: 3 × 3
name band plays
<chr> <chr> <chr>
1 Mick Stones <NA>
2 John Beatles guitar
3 Paul Beatles bass
<- band_instruments %>% bind_rows(data.frame(name="John",plays="harmonica"))
band_instruments_edit band_instruments_edit
# A tibble: 4 × 2
name plays
<chr> <chr>
1 John guitar
2 Paul bass
3 Keith guitar
4 John harmonica
%>% left_join(band_instruments_edit) band_members
Joining with `by = join_by(name)`
# A tibble: 4 × 3
name band plays
<chr> <chr> <chr>
1 Mick Stones <NA>
2 John Beatles guitar
3 John Beatles harmonica
4 Paul Beatles bass
Right Join
%>% right_join(band_instruments) band_members
Joining with `by = join_by(name)`
# A tibble: 3 × 3
name band plays
<chr> <chr> <chr>
1 John Beatles guitar
2 Paul Beatles bass
3 Keith <NA> guitar
Full Join
%>% full_join(band_instruments) band_members
Joining with `by = join_by(name)`
# A tibble: 4 × 3
name band plays
<chr> <chr> <chr>
1 Mick Stones <NA>
2 John Beatles guitar
3 Paul Beatles bass
4 Keith <NA> guitar
semi join
%>% semi_join(band_instruments) band_members
Joining with `by = join_by(name)`
# A tibble: 2 × 2
name band
<chr> <chr>
1 John Beatles
2 Paul Beatles
anti join
%>% anti_join(band_instruments) band_members
Joining with `by = join_by(name)`
# A tibble: 1 × 2
name band
<chr> <chr>
1 Mick Stones
FYI
Ada kalanya Anda perlu menggabungkan data seperti band_members dan band_instruments2 dimana tidak ada nama kolom yang sama, namun sebenarnya bisa digabungkan. Maka Anda memerlukan sedikit tambahan syntax.
Misal,Anda hendak menggabungkan band_members dan band_instruments2 secara full_join, maka Anda bisa menggunakan syntax berikut ini :
full_join(band_members, band_instruments2, by = c("name" = "artist"))
# A tibble: 4 × 3
name band plays
<chr> <chr> <chr>
1 Mick Stones <NA>
2 John Beatles guitar
3 Paul Beatles bass
4 Keith <NA> guitar
Data Spatial Menggunakan R
::install_github("yutannihilation/ggsflabel") remotes
Skipping install of 'ggsflabel' from a github remote, the SHA1 (846ede01) has not changed since last install.
Use `force = TRUE` to force installation
library(tidyverse)
library(sf)
library(ggspatial)
library(ggplot2)
library(prettymapr)
Data Spatial dengan geometri titik
Memanggil data
<- st_read(dsn = "C:\\Users\\User\\Documents\\Data\\SnowGIS_SHP", layer="Cholera_Deaths") dcr
Reading layer `Cholera_Deaths' from data source
`C:\Users\User\Documents\Data\SnowGIS_SHP' using driver `ESRI Shapefile'
Simple feature collection with 250 features and 2 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 529160.3 ymin: 180857.9 xmax: 529655.9 ymax: 181306.2
Projected CRS: OSGB36 / British National Grid
Visualisasi dan spatial
Visualisasi statis
ggplot(data = dcr)+
geom_sf()+
#mengubah tema
theme_bw()
ggplot(dcr) +
annotation_map_tile(type = "osm", zoomin = 0) +
geom_sf(aes(size = Count), alpha = 0.7)+
theme_bw()
Loading required namespace: raster
Zoom: 17
Terjadi error pada sintaks diatas karena adanya perbedaan CRS pada data Cholera Death dan map tiles yang berasal dari Open Street Map. CRS pada data Cholera Death adalah OSGB36 / British National Grid. Semetara itu, CRS pada Open Street Map atau maps yang lain adalah WGS84 atau sering juga dikenal sebagai EPSG:3857. Fungsi st_crs() akan menerjemahkan dari kode EPSG ke string PROJ.4 dan WKT. Berikut sintaks untuk menampilkan string PROJ.4 dan WKT
st_crs(3857)$proj4string
[1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"
st_crs(3857)$wkt
[1] "PROJCRS[\"WGS 84 / Pseudo-Mercator\",\n BASEGEOGCRS[\"WGS 84\",\n ENSEMBLE[\"World Geodetic System 1984 ensemble\",\n MEMBER[\"World Geodetic System 1984 (Transit)\"],\n MEMBER[\"World Geodetic System 1984 (G730)\"],\n MEMBER[\"World Geodetic System 1984 (G873)\"],\n MEMBER[\"World Geodetic System 1984 (G1150)\"],\n MEMBER[\"World Geodetic System 1984 (G1674)\"],\n MEMBER[\"World Geodetic System 1984 (G1762)\"],\n MEMBER[\"World Geodetic System 1984 (G2139)\"],\n ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n LENGTHUNIT[\"metre\",1]],\n ENSEMBLEACCURACY[2.0]],\n PRIMEM[\"Greenwich\",0,\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n ID[\"EPSG\",4326]],\n CONVERSION[\"Popular Visualisation Pseudo-Mercator\",\n METHOD[\"Popular Visualisation Pseudo Mercator\",\n ID[\"EPSG\",1024]],\n PARAMETER[\"Latitude of natural origin\",0,\n ANGLEUNIT[\"degree\",0.0174532925199433],\n ID[\"EPSG\",8801]],\n PARAMETER[\"Longitude of natural origin\",0,\n ANGLEUNIT[\"degree\",0.0174532925199433],\n ID[\"EPSG\",8802]],\n PARAMETER[\"False easting\",0,\n LENGTHUNIT[\"metre\",1],\n ID[\"EPSG\",8806]],\n PARAMETER[\"False northing\",0,\n LENGTHUNIT[\"metre\",1],\n ID[\"EPSG\",8807]]],\n CS[Cartesian,2],\n AXIS[\"easting (X)\",east,\n ORDER[1],\n LENGTHUNIT[\"metre\",1]],\n AXIS[\"northing (Y)\",north,\n ORDER[2],\n LENGTHUNIT[\"metre\",1]],\n USAGE[\n SCOPE[\"Web mapping and visualisation.\"],\n AREA[\"World between 85.06°S and 85.06°N.\"],\n BBOX[-85.06,-180,85.06,180]],\n ID[\"EPSG\",3857]]"
st_crs(dcr)$proj4string
[1] "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs"
st_crs(dcr)$wkt
[1] "PROJCRS[\"OSGB36 / British National Grid\",\n BASEGEOGCRS[\"OSGB36\",\n DATUM[\"Ordnance Survey of Great Britain 1936\",\n ELLIPSOID[\"Airy 1830\",6377563.396,299.3249646,\n LENGTHUNIT[\"metre\",1]]],\n PRIMEM[\"Greenwich\",0,\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n ID[\"EPSG\",4277]],\n CONVERSION[\"British National Grid\",\n METHOD[\"Transverse Mercator\",\n ID[\"EPSG\",9807]],\n PARAMETER[\"Latitude of natural origin\",49,\n ANGLEUNIT[\"degree\",0.0174532925199433],\n ID[\"EPSG\",8801]],\n PARAMETER[\"Longitude of natural origin\",-2,\n ANGLEUNIT[\"degree\",0.0174532925199433],\n ID[\"EPSG\",8802]],\n PARAMETER[\"Scale factor at natural origin\",0.9996012717,\n SCALEUNIT[\"unity\",1],\n ID[\"EPSG\",8805]],\n PARAMETER[\"False easting\",400000,\n LENGTHUNIT[\"metre\",1],\n ID[\"EPSG\",8806]],\n PARAMETER[\"False northing\",-100000,\n LENGTHUNIT[\"metre\",1],\n ID[\"EPSG\",8807]]],\n CS[Cartesian,2],\n AXIS[\"(E)\",east,\n ORDER[1],\n LENGTHUNIT[\"metre\",1]],\n AXIS[\"(N)\",north,\n ORDER[2],\n LENGTHUNIT[\"metre\",1]],\n USAGE[\n SCOPE[\"Engineering survey, topographic mapping.\"],\n AREA[\"United Kingdom (UK) - offshore to boundary of UKCS within 49°45'N to 61°N and 9°W to 2°E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore.\"],\n BBOX[49.75,-9.01,61.01,2.01]],\n ID[\"EPSG\",27700]]"
<- dcr %>%
cholera_latlong st_transform(3857)
st_crs(cholera_latlong)$proj4string
[1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"
st_crs(3857)$proj4string
[1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"
ggplot(cholera_latlong) +
annotation_map_tile(type = "osm", zoomin = 0) +
geom_sf(aes(size = Count),color="#0288D1", alpha = 0.7)+
theme_bw()
Zoom: 17
Visualisasi Interaktif
%>%
cholera_latlong ::mapview(zcol = "Count") mapview
Data Spatial dengan geometri Poligon
Data
<- st_read("C:\\Users\\User\\Documents\\Data\\Admin2Kabupaten\\idn_admbnda_adm2_bps_20200401.shp") kab_indo
Reading layer `idn_admbnda_adm2_bps_20200401' from data source
`C:\Users\User\Documents\Data\Admin2Kabupaten\idn_admbnda_adm2_bps_20200401.shp'
using driver `ESRI Shapefile'
Simple feature collection with 522 features and 14 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 95.01079 ymin: -11.00762 xmax: 141.0194 ymax: 6.07693
Geodetic CRS: WGS 84
<- read.csv("C:\\Users\\User\\Documents\\Data\\jml_tenaga_kesehatan_msyrkt__kabupatenkota.csv")
jum_nakes <- jum_nakes %>%
jum_nakes2021 filter(tahun==2021) %>%
select(nama_kabupaten_kota,jumlah_nakesmas)
jum_nakes2021
nama_kabupaten_kota jumlah_nakesmas
1 KABUPATEN BOGOR 291
2 KABUPATEN SUKABUMI 74
3 KABUPATEN CIANJUR 66
4 KABUPATEN BANDUNG 135
5 KABUPATEN GARUT 134
6 KABUPATEN TASIKMALAYA 1
7 KABUPATEN CIAMIS 105
8 KABUPATEN KUNINGAN 86
9 KABUPATEN CIREBON 97
10 KABUPATEN MAJALENGKA 40
11 KABUPATEN SUMEDANG 86
12 KABUPATEN INDRAMAYU 102
13 KABUPATEN SUBANG 66
14 KABUPATEN PURWAKARTA 14
15 KABUPATEN KARAWANG 44
16 KABUPATEN BEKASI 77
17 KABUPATEN BANDUNG BARAT 50
18 KABUPATEN PANGANDARAN 47
19 KOTA BOGOR 70
20 KOTA SUKABUMI 29
21 KOTA BANDUNG 192
22 KOTA CIREBON 34
23 KOTA BEKASI 115
24 KOTA DEPOK 120
25 KOTA CIMAHI 45
26 KOTA TASIKMALAYA 58
27 KOTA BANJAR 39
Visualisasi Data Spatial
Visualisasi Statis
ggplot(data = kab_indo)+
geom_sf()+
theme_bw()
#filter jabar
<- kab_indo %>%
jabar_kabkot filter(ADM1_EN=="Jawa Barat")
jabar_kabkot
Simple feature collection with 28 features and 14 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 106.3703 ymin: -7.820979 xmax: 108.8469 ymax: -5.918148
Geodetic CRS: WGS 84
First 10 features:
Shape_Leng Shape_Area ADM2_EN ADM2_PCODE ADM2_REF ADM2ALT1EN
1 3.093005 0.14360665 Bandung ID3204 <NA> <NA>
2 3.027563 0.10447586 Bandung Barat ID3217 <NA> <NA>
3 2.553369 0.10359739 Bekasi ID3216 <NA> <NA>
4 4.450342 0.24474031 Bogor ID3201 <NA> <NA>
5 3.130958 0.13047729 Ciamis ID3207 <NA> <NA>
6 4.741142 0.29407915 Cianjur ID3203 <NA> <NA>
7 2.752827 0.08738231 Cirebon ID3209 <NA> <NA>
8 3.477542 0.25300160 Garut ID3205 <NA> <NA>
9 3.148833 0.17028961 Indramayu ID3212 <NA> <NA>
10 2.898903 0.15641686 Karawang ID3215 <NA> <NA>
ADM2ALT2EN ADM1_EN ADM1_PCODE ADM0_EN ADM0_PCODE date validOn
1 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
2 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
3 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
4 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
5 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
6 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
7 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
8 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
9 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
10 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
validTo geometry
1 -001-11-30 MULTIPOLYGON (((107.7331 -6...
2 -001-11-30 MULTIPOLYGON (((107.4095 -6...
3 -001-11-30 MULTIPOLYGON (((107.0757 -5...
4 -001-11-30 MULTIPOLYGON (((106.9708 -6...
5 -001-11-30 MULTIPOLYGON (((108.36 -7.0...
6 -001-11-30 MULTIPOLYGON (((107.2302 -6...
7 -001-11-30 MULTIPOLYGON (((108.685 -6....
8 -001-11-30 MULTIPOLYGON (((107.9182 -6...
9 -001-11-30 MULTIPOLYGON (((108.2003 -6...
10 -001-11-30 MULTIPOLYGON (((107.1126 -5...
%>%
jabar_kabkot ggplot()+
geom_sf()+
::geom_sf_label_repel(aes(label=str_wrap(ADM2_EN,width = 1)),size=1.75)+
ggsflabeltheme_bw()+
theme(axis.title = element_blank())
Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
give correct results for longitude/latitude data
kita juga bisa menambahkan peta “asli” dari OpenStreetMap dengan fungsi annotation_map_tile. Untuk itu, kita perlu memastikan bahwa proj4string dari data yang kita miliki sama dengan EPSG:3857
st_crs(3857)$proj4string
[1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"
st_crs(jabar_kabkot)$proj4string
[1] "+proj=longlat +datum=WGS84 +no_defs"
<- jabar_kabkot %>%
jabar_kabkot_osm st_transform(3857)
st_crs(jabar_kabkot_osm)$proj4string
[1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"
%>%
jabar_kabkot_osm ggplot()+
annotation_map_tile(type = "osm", zoomin = 0)+
geom_sf()+
::geom_sf_label_repel(aes(label=str_wrap(ADM2_EN,width = 1)),size=1.75)+
ggsflabeltheme_bw()
Zoom: 9
<- jum_nakes2021 %>%
jum_nakes2021fin mutate(nama_kabupaten_kota= nama_kabupaten_kota %>%
#dibuang kata "KABUPATEN"
str_remove(pattern = "KABUPATEN ") %>%
#diubah menjadi huruf kapital setiap awal kata
str_to_title()
) jum_nakes2021fin
nama_kabupaten_kota jumlah_nakesmas
1 Bogor 291
2 Sukabumi 74
3 Cianjur 66
4 Bandung 135
5 Garut 134
6 Tasikmalaya 1
7 Ciamis 105
8 Kuningan 86
9 Cirebon 97
10 Majalengka 40
11 Sumedang 86
12 Indramayu 102
13 Subang 66
14 Purwakarta 14
15 Karawang 44
16 Bekasi 77
17 Bandung Barat 50
18 Pangandaran 47
19 Kota Bogor 70
20 Kota Sukabumi 29
21 Kota Bandung 192
22 Kota Cirebon 34
23 Kota Bekasi 115
24 Kota Depok 120
25 Kota Cimahi 45
26 Kota Tasikmalaya 58
27 Kota Banjar 39
<- jabar_kabkot %>%
jabar_nakes full_join(y = jum_nakes2021fin,
by = join_by(ADM2_EN==nama_kabupaten_kota))
jabar_nakes
Simple feature collection with 28 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 106.3703 ymin: -7.820979 xmax: 108.8469 ymax: -5.918148
Geodetic CRS: WGS 84
First 10 features:
Shape_Leng Shape_Area ADM2_EN ADM2_PCODE ADM2_REF ADM2ALT1EN
1 3.093005 0.14360665 Bandung ID3204 <NA> <NA>
2 3.027563 0.10447586 Bandung Barat ID3217 <NA> <NA>
3 2.553369 0.10359739 Bekasi ID3216 <NA> <NA>
4 4.450342 0.24474031 Bogor ID3201 <NA> <NA>
5 3.130958 0.13047729 Ciamis ID3207 <NA> <NA>
6 4.741142 0.29407915 Cianjur ID3203 <NA> <NA>
7 2.752827 0.08738231 Cirebon ID3209 <NA> <NA>
8 3.477542 0.25300160 Garut ID3205 <NA> <NA>
9 3.148833 0.17028961 Indramayu ID3212 <NA> <NA>
10 2.898903 0.15641686 Karawang ID3215 <NA> <NA>
ADM2ALT2EN ADM1_EN ADM1_PCODE ADM0_EN ADM0_PCODE date validOn
1 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
2 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
3 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
4 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
5 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
6 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
7 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
8 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
9 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
10 <NA> Jawa Barat ID32 Indonesia ID 2019-12-20 2020-04-01
validTo jumlah_nakesmas geometry
1 -001-11-30 135 MULTIPOLYGON (((107.7331 -6...
2 -001-11-30 50 MULTIPOLYGON (((107.4095 -6...
3 -001-11-30 77 MULTIPOLYGON (((107.0757 -5...
4 -001-11-30 291 MULTIPOLYGON (((106.9708 -6...
5 -001-11-30 105 MULTIPOLYGON (((108.36 -7.0...
6 -001-11-30 66 MULTIPOLYGON (((107.2302 -6...
7 -001-11-30 97 MULTIPOLYGON (((108.685 -6....
8 -001-11-30 134 MULTIPOLYGON (((107.9182 -6...
9 -001-11-30 102 MULTIPOLYGON (((108.2003 -6...
10 -001-11-30 44 MULTIPOLYGON (((107.1126 -5...
<- jabar_nakes %>%
p0 ggplot()+
geom_sf(aes(fill=jumlah_nakesmas))+
::geom_sf_label_repel(aes(label=str_wrap(ADM2_EN,width = 1)),size=1.75)+
ggsflabelscale_fill_stepsn(colours = viridis::magma(n = 6,direction = -1),breaks=seq(0,300,50))+
annotation_north_arrow(location = "tl",which_north = "true",
pad_x = unit(0.2, "cm"), pad_y = unit(0.2, "cm"),
style = north_arrow_nautical,width = unit(1.5, "cm"),
height = unit(1.5, "cm"))+
theme_bw()+
theme(axis.title = element_blank())
p0
Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
give correct results for longitude/latitude data
Open streetmap
<- jabar_nakes %>%
p1 st_transform(3857) %>%
ggplot()+
annotation_map_tile(type = "osm", zoomin = 0)+
geom_sf(aes(fill=jumlah_nakesmas))+
::geom_sf_label_repel(aes(label=str_wrap(ADM2_EN,
ggsflabelwidth=1)
size=1.75)+
),scale_fill_stepsn(colours = viridis::magma(n = 6,
direction = -1),breaks=seq(0,300,50))+
annotation_north_arrow(location = "tl",which_north = "true",
pad_x = unit(0.2, "cm"),
pad_y = unit(0.2, "cm"),
style = north_arrow_nautical,width = unit(1.5, "cm"),
height = unit(1.5, "cm")) +
theme_bw()+
theme(axis.title = element_blank())
p1
Zoom: 9
Visualisasi Interaktif
%>%
jabar_nakes ::mapview(zcol="jumlah_nakesmas",
mapviewat = seq(0,300,50),
col.regions=viridis::magma(n = 7,direction = -1))