library(tmap)
tm_shape(World,
bbox = "FULL",
crs = "+proj=ortho +lat_0=30 +lon_0=0") +
tm_polygons() +
tm_xlab("Longitudes") +
tm_ylab("Latitudes")+
tm_graticules(n.x = 20, n.y = 10, col = "black", lwd = 2, labels.show = FALSE)


tm_shape(World,
bbox = "FULL",
crs = "+proj=ortho +lat_0=30 +lon_0=0") +
tm_polygons() +
tm_xlab("Longitudes") +
tm_ylab("Latitudes")+
tm_graticules(n.x = 20, n.y = 10, col = "black", lwd = 2, labels.show = FALSE)+
tm_style("natural")

tm_shape(World)+
tm_polygons(
fill = "#BF3EFF", # fill color
col = "black", # line color
lwd = 0.5, # line width
lty = "dashed") # line type

tm_shape(World)+
tm_polygons(fill = "grey90") + # constant fill color
tm_symbols(size = "pop_est", # data variable, mapped to symbol size
fill = "well_being", # data variable, mapped to symbol fill color
shape = "income_grp") # data variable, mapped to symbol shape

tm_shape(World)+
tm_polygons(fill = "HPI")

tm_shape(World)+ tm_polygons(
fill = "HPI",
fill.scale = tm_scale_intervals(
style = "fisher", # a method to specify the classes
n = 7, # number of classes
midpoint = 38, # data value mapped to the middle palette color
values = "pu_gn_div" # color palette;
# run cols4all::c4a_gui() to explore color palettes
))

tm_shape(World) +
tm_polygons(
fill = "HPI",
fill.scale = tm_scale_intervals(
breaks = c(0, 10, 20, 30, 40, 50, 60),
values = "pu_gn_div",
labels = c("0–10", "10–20", "20–30", "30–40", "40–50", "50–60")
)
)

tm_shape(World)+
tm_polygons(
fill = "HPI",
fill.scale = tm_scale_continuous(
limits = c(10, 60),
values = "scico.hawaii"))

## ℹ tmap mode set to "plot".
## ℹ switch back to "view" mode with `tmap::ttm()`
## [plot mode] fit legend/component: Some legend items or map compoments do not
## fit well, and are therefore rescaled.
## ℹ Set the tmap option `component.autoscale = FALSE` to disable rescaling.
tm_shape(World) +
tm_polygons(
fill = "economy",
fill.scale = tm_scale_categorical())

tm_shape(metro) +
tm_bubbles(size = "pop2020") +
tm_basemap("OpenTopoMap")

tm_shape(World) +
tm_polygons(
fill = "economy",
fill.chart = tm_chart_bar())

tm_shape(World, crs = "+proj=eqearth") +
tm_polygons(
fill = "HPI") +
tm_layout(bg.color = "skyblue",
earth_boundary = TRUE,
frame = FALSE,
space.color = "white")

tm_shape(World, crs = "+proj=eqearth") +
tm_polygons(
fill = "HPI") +
tm_layout(bg.color = "skyblue",
earth_boundary = TRUE,
frame = FALSE,
space.color = "white")

## Linking to GEOS 3.13.1, GDAL 3.11.0, PROJ 9.6.0; sf_use_s2() is FALSE
tm_shape(World,
bbox = "FULL",
crs = "+proj=ortho +lat_0=30 +lon_0=0") +
tm_polygons() +
tm_xlab("Longitudes") +
tm_ylab("Latitudes")


LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodG1hcCkNCnRtX3NoYXBlKFdvcmxkLCANCiAgICAgICAgIGJib3ggPSAiRlVMTCIsDQogICAgICAgICBjcnMgPSAiK3Byb2o9b3J0aG8gK2xhdF8wPTMwICtsb25fMD0wIikgKw0KICB0bV9wb2x5Z29ucygpICsNCiAgdG1feGxhYigiTG9uZ2l0dWRlcyIpICsNCiAgdG1feWxhYigiTGF0aXR1ZGVzIikrIA0KICB0bV9ncmF0aWN1bGVzKG4ueCA9IDIwLCBuLnkgPSAxMCwgY29sID0gImJsYWNrIiwgbHdkID0gMiwgbGFiZWxzLnNob3cgPSBGQUxTRSkgDQpgYGANCg0KDQpgYGB7cn0NCnRtX3NoYXBlKFdvcmxkLCANCiAgICAgICAgIGJib3ggPSAiRlVMTCIsDQogICAgICAgICBjcnMgPSAiK3Byb2o9b3J0aG8gK2xhdF8wPTMwICtsb25fMD0wIikgKw0KICB0bV9wb2x5Z29ucygpICsNCiAgdG1feGxhYigiTG9uZ2l0dWRlcyIpICsNCiAgdG1feWxhYigiTGF0aXR1ZGVzIikrIA0KICB0bV9ncmF0aWN1bGVzKG4ueCA9IDIwLCBuLnkgPSAxMCwgY29sID0gImJsYWNrIiwgbHdkID0gMiwgbGFiZWxzLnNob3cgPSBGQUxTRSkrDQogIHRtX3N0eWxlKCJuYXR1cmFsIikNCg0KYGBgDQoNCg0KYGBge3J9DQp0bV9zaGFwZShXb3JsZCkrIA0KICB0bV9wb2x5Z29ucygNCiAgICBmaWxsID0gIiNCRjNFRkYiLCAjIGZpbGwgY29sb3INCiAgICBjb2wgPSAiYmxhY2siLCAgICAjIGxpbmUgY29sb3INCiAgICBsd2QgPSAwLjUsICAgICAgICAjIGxpbmUgd2lkdGgNCiAgICBsdHkgPSAiZGFzaGVkIikgICAjIGxpbmUgdHlwZQ0KYGBgDQoNCmBgYHtyfQ0KdG1fc2hhcGUoV29ybGQpKyANCiAgdG1fcG9seWdvbnMoZmlsbCA9ICJncmV5OTAiKSArICAgIyBjb25zdGFudCBmaWxsIGNvbG9yIA0KICB0bV9zeW1ib2xzKHNpemUgPSAicG9wX2VzdCIsICAgICAjIGRhdGEgdmFyaWFibGUsIG1hcHBlZCB0byBzeW1ib2wgc2l6ZQ0KICAgICAgICAgICAgIGZpbGwgPSAid2VsbF9iZWluZyIsICAjIGRhdGEgdmFyaWFibGUsIG1hcHBlZCB0byBzeW1ib2wgZmlsbCBjb2xvcg0KICAgICAgICAgICAgIHNoYXBlID0gImluY29tZV9ncnAiKSAjIGRhdGEgdmFyaWFibGUsIG1hcHBlZCB0byBzeW1ib2wgc2hhcGUNCg0KYGBgDQoNCmBgYHtyfQ0KdG1fc2hhcGUoV29ybGQpKw0KdG1fcG9seWdvbnMoZmlsbCA9ICJIUEkiKQ0KYGBgDQoNCmBgYHtyfQ0KdG1fc2hhcGUoV29ybGQpKyB0bV9wb2x5Z29ucygNCiAgZmlsbCA9ICJIUEkiLA0KICBmaWxsLnNjYWxlID0gdG1fc2NhbGVfaW50ZXJ2YWxzKA0KICAgIHN0eWxlID0gImZpc2hlciIsICAgICAgIyBhIG1ldGhvZCB0byBzcGVjaWZ5IHRoZSBjbGFzc2VzDQogICAgbiA9IDcsICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiBjbGFzc2VzDQogICAgbWlkcG9pbnQgPSAzOCwgICAgICAgICAjIGRhdGEgdmFsdWUgbWFwcGVkIHRvIHRoZSBtaWRkbGUgcGFsZXR0ZSBjb2xvcg0KICAgIHZhbHVlcyA9ICJwdV9nbl9kaXYiICAgIyBjb2xvciBwYWxldHRlOyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcnVuIGNvbHM0YWxsOjpjNGFfZ3VpKCkgdG8gZXhwbG9yZSBjb2xvciBwYWxldHRlcw0KICApKQ0KDQpgYGANCg0KDQpgYGB7cn0NCnRtX3NoYXBlKFdvcmxkKSArDQogIHRtX3BvbHlnb25zKA0KICAgIGZpbGwgPSAiSFBJIiwNCiAgICBmaWxsLnNjYWxlID0gdG1fc2NhbGVfaW50ZXJ2YWxzKA0KICAgICAgYnJlYWtzID0gYygwLCAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwKSwNCiAgICAgIHZhbHVlcyA9ICJwdV9nbl9kaXYiLA0KICAgICAgbGFiZWxzID0gYygiMOKAkzEwIiwgIjEw4oCTMjAiLCAiMjDigJMzMCIsICIzMOKAkzQwIiwgIjQw4oCTNTAiLCAiNTDigJM2MCIpDQogICAgKQ0KICApDQpgYGANCg0KYGBge3J9DQp0bV9zaGFwZShXb3JsZCkrIA0KICB0bV9wb2x5Z29ucygNCiAgICBmaWxsID0gIkhQSSIsDQogICAgZmlsbC5zY2FsZSA9IHRtX3NjYWxlX2NvbnRpbnVvdXMoDQogICAgICBsaW1pdHMgPSBjKDEwLCA2MCksDQogICAgICB2YWx1ZXMgPSAic2NpY28uaGF3YWlpIikpDQpgYGANCg0KYGBge3J9DQojIyDihLkgdG1hcCBtb2RlIHNldCB0byAicGxvdCIuDQojIyDihLkgc3dpdGNoIGJhY2sgdG8gInZpZXciIG1vZGUgd2l0aCBgdG1hcDo6dHRtKClgDQojIyBbcGxvdCBtb2RlXSBmaXQgbGVnZW5kL2NvbXBvbmVudDogU29tZSBsZWdlbmQgaXRlbXMgb3IgbWFwIGNvbXBvbWVudHMgZG8gbm90DQojIyBmaXQgd2VsbCwgYW5kIGFyZSB0aGVyZWZvcmUgcmVzY2FsZWQuDQojIyDihLkgU2V0IHRoZSB0bWFwIG9wdGlvbiBgY29tcG9uZW50LmF1dG9zY2FsZSA9IEZBTFNFYCB0byBkaXNhYmxlIHJlc2NhbGluZy4NCmBgYA0KDQpgYGB7cn0NCnRtX3NoYXBlKFdvcmxkKSArIA0KICB0bV9wb2x5Z29ucygNCiAgICBmaWxsID0gImVjb25vbXkiLA0KICAgIGZpbGwuc2NhbGUgPSB0bV9zY2FsZV9jYXRlZ29yaWNhbCgpKQ0KYGBgDQoNCg0KYGBge3J9DQp0bV9zaGFwZShtZXRybykgKw0KICB0bV9idWJibGVzKHNpemUgPSAicG9wMjAyMCIpICsNCiAgdG1fYmFzZW1hcCgiT3BlblRvcG9NYXAiKQ0KYGBgDQoNCg0KYGBge3J9DQp0bV9zaGFwZShXb3JsZCkgKyANCiAgdG1fcG9seWdvbnMoDQogICAgZmlsbCA9ICJlY29ub215IiwNCiAgICBmaWxsLmNoYXJ0ID0gdG1fY2hhcnRfYmFyKCkpDQpgYGANCmBgYHtyfQ0KdG1fc2hhcGUoV29ybGQsIGNycyA9ICIrcHJvaj1lcWVhcnRoIikgKyANCiAgdG1fcG9seWdvbnMoDQogICAgZmlsbCA9ICJIUEkiKSArDQogIHRtX2xheW91dChiZy5jb2xvciA9ICJza3libHVlIiwNCiAgICAgICAgICAgIGVhcnRoX2JvdW5kYXJ5ID0gVFJVRSwNCiAgICAgICAgICAgIGZyYW1lID0gRkFMU0UsDQogICAgICAgICAgICBzcGFjZS5jb2xvciA9ICJ3aGl0ZSIpDQpgYGANCg0KYGBge3J9DQp0bV9zaGFwZShXb3JsZCwgY3JzID0gIitwcm9qPWVxZWFydGgiKSArIA0KICB0bV9wb2x5Z29ucygNCiAgICBmaWxsID0gIkhQSSIpICsNCiAgdG1fbGF5b3V0KGJnLmNvbG9yID0gInNreWJsdWUiLA0KICAgICAgICAgICAgZWFydGhfYm91bmRhcnkgPSBUUlVFLA0KICAgICAgICAgICAgZnJhbWUgPSBGQUxTRSwNCiAgICAgICAgICAgIHNwYWNlLmNvbG9yID0gIndoaXRlIikNCiMjIExpbmtpbmcgdG8gR0VPUyAzLjEzLjEsIEdEQUwgMy4xMS4wLCBQUk9KIDkuNi4wOyBzZl91c2VfczIoKSBpcyBGQUxTRQ0KDQpgYGANCmBgYHtyfQ0KdG1fc2hhcGUoV29ybGQsIA0KICAgICAgICAgYmJveCA9ICJGVUxMIiwNCiAgICAgICAgIGNycyA9ICIrcHJvaj1vcnRobyArbGF0XzA9MzAgK2xvbl8wPTAiKSArDQogIHRtX3BvbHlnb25zKCkgKw0KICB0bV94bGFiKCJMb25naXR1ZGVzIikgKw0KICB0bV95bGFiKCJMYXRpdHVkZXMiKQ0KYGBgDQoNCg==