#install.packages("sf")
#install.packages("geobr")Tutorial 3a - Ggplot Avançado
Fazendo mapas
Com ggplot podemos fazer mapas para descrever informações geográficas e visualizar sua distribuição espacial.
Pacote geobr para mapas do Brasil
Vamos utilizar o pacote sf e o pacote geobr.
library(geobr)
library(sf)
library(tidyverse)
library(readxl)
library(knitr)
library(ggrepel)
library(patchwork)O pacote geobr serve para fazer download de mapas do BR, mais informações aqui.
Vamos mostrar como baixar os dados do Brasil:
estados <- read_state(
year = 2020
)Using year 2020
|
| | 0%
|
|=== | 4%
|
|===== | 7%
|
|======== | 11%
|
|========== | 15%
|
|============= | 19%
|
|================ | 22%
|
|================== | 26%
|
|===================== | 30%
|
|======================= | 33%
|
|========================== | 37%
|
|============================= | 41%
|
|=============================== | 44%
|
|================================== | 48%
|
|==================================== | 52%
|
|======================================= | 56%
|
|========================================= | 59%
|
|============================================ | 63%
|
|=============================================== | 67%
|
|================================================= | 70%
|
|==================================================== | 74%
|
|====================================================== | 78%
|
|========================================================= | 81%
|
|============================================================ | 85%
|
|============================================================== | 89%
|
|================================================================= | 93%
|
|=================================================================== | 96%
|
|======================================================================| 100%
head(estados)Simple feature collection with 6 features and 5 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -73.99045 ymin: -13.6937 xmax: -46.06142 ymax: 5.271841
Geodetic CRS: SIRGAS 2000
code_state abbrev_state name_state code_region name_region
1 11 RO Rondônia 1 Norte
2 12 AC Acre 1 Norte
3 13 AM Amazônas 1 Norte
4 14 RR Roraima 1 Norte
5 15 PA Pará 1 Norte
6 16 AP Amapá 1 Norte
geom
1 MULTIPOLYGON (((-65.3815 -1...
2 MULTIPOLYGON (((-71.07772 -...
3 MULTIPOLYGON (((-69.83766 -...
4 MULTIPOLYGON (((-63.96008 2...
5 MULTIPOLYGON (((-51.43248 -...
6 MULTIPOLYGON (((-50.45011 2...
Vamos fazer um gráfico do mapa:
estados %>%
ggplot()+
geom_sf()
Podemos colorir o mapa com uma cor pré-definida:
estados %>%
ggplot()+
geom_sf(fill = "#e32d91",
color = "white")+
theme_void()
Para fazer o mapa de um Estado
Vamos fazer o mapa de SC com todos seus municípios.
municipiosSC <- read_municipality(
code_muni = "SC",
year = 2020,
simplified = TRUE #esta opção em FALSE traz uma resolução maior
)Using year/date 2020
Downloading: 2 kB
Downloading: 2 kB
Downloading: 2 kB
Downloading: 2 kB
Downloading: 10 kB
Downloading: 10 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 34 kB
Downloading: 67 kB
Downloading: 67 kB
Downloading: 99 kB
Downloading: 99 kB
Downloading: 99 kB
Downloading: 99 kB
Downloading: 130 kB
Downloading: 130 kB
Downloading: 130 kB
Downloading: 130 kB
Downloading: 130 kB
Downloading: 130 kB
Downloading: 140 kB
Downloading: 140 kB
Downloading: 140 kB
Downloading: 140 kB
Downloading: 150 kB
Downloading: 150 kB
Downloading: 150 kB
Downloading: 150 kB
Downloading: 150 kB
Downloading: 150 kB
Downloading: 160 kB
Downloading: 160 kB
Downloading: 190 kB
Downloading: 190 kB
Downloading: 200 kB
Downloading: 200 kB
Downloading: 200 kB
Downloading: 200 kB
Downloading: 200 kB
Downloading: 200 kB
Downloading: 210 kB
Downloading: 210 kB
Downloading: 220 kB
Downloading: 220 kB
Downloading: 230 kB
Downloading: 230 kB
Downloading: 240 kB
Downloading: 240 kB
Downloading: 240 kB
Downloading: 240 kB
Downloading: 280 kB
Downloading: 280 kB
Downloading: 290 kB
Downloading: 290 kB
Downloading: 290 kB
Downloading: 290 kB
Downloading: 290 kB
Downloading: 290 kB
Downloading: 300 kB
Downloading: 300 kB
Downloading: 310 kB
Downloading: 310 kB
Downloading: 320 kB
Downloading: 320 kB
Downloading: 320 kB
Downloading: 320 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 330 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 340 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 350 kB
Downloading: 360 kB
Downloading: 360 kB
Downloading: 360 kB
Downloading: 360 kB
Downloading: 370 kB
Downloading: 370 kB
Downloading: 380 kB
Downloading: 380 kB
Downloading: 380 kB
Downloading: 380 kB
Downloading: 380 kB
Downloading: 380 kB
Downloading: 390 kB
Downloading: 390 kB
Downloading: 400 kB
Downloading: 400 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 410 kB
Downloading: 420 kB
Downloading: 420 kB
Downloading: 420 kB
Downloading: 420 kB
Downloading: 430 kB
Downloading: 430 kB
Downloading: 430 kB
Downloading: 430 kB
Downloading: 440 kB
Downloading: 440 kB
Downloading: 440 kB
Downloading: 440 kB
Downloading: 450 kB
Downloading: 450 kB
Downloading: 460 kB
Downloading: 460 kB
Downloading: 460 kB
Downloading: 460 kB
Downloading: 470 kB
Downloading: 470 kB
Downloading: 470 kB
Downloading: 470 kB
Downloading: 470 kB
Downloading: 470 kB
Downloading: 480 kB
Downloading: 480 kB
Downloading: 480 kB
Downloading: 480 kB
Downloading: 480 kB
Downloading: 480 kB
Downloading: 490 kB
Downloading: 490 kB
Downloading: 500 kB
Downloading: 500 kB
Downloading: 500 kB
Downloading: 500 kB
Downloading: 520 kB
Downloading: 520 kB
Downloading: 520 kB
Downloading: 520 kB
Downloading: 530 kB
Downloading: 530 kB
Downloading: 530 kB
Downloading: 530 kB
Downloading: 530 kB
Downloading: 530 kB
Downloading: 540 kB
Downloading: 540 kB
Downloading: 540 kB
Downloading: 540 kB
Downloading: 540 kB
Downloading: 540 kB
Downloading: 550 kB
Downloading: 550 kB
Downloading: 550 kB
Downloading: 550 kB
Downloading: 580 kB
Downloading: 580 kB
Downloading: 580 kB
Downloading: 580 kB
Downloading: 620 kB
Downloading: 620 kB
Downloading: 640 kB
Downloading: 640 kB
Downloading: 640 kB
Downloading: 640 kB
Downloading: 640 kB
Downloading: 640 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 650 kB
Downloading: 660 kB
Downloading: 660 kB
Downloading: 660 kB
Downloading: 660 kB
Downloading: 660 kB
Downloading: 660 kB
Downloading: 670 kB
Downloading: 670 kB
Downloading: 670 kB
Downloading: 670 kB
Downloading: 670 kB
Downloading: 670 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 680 kB
Downloading: 690 kB
Downloading: 690 kB
Downloading: 690 kB
Downloading: 690 kB
Downloading: 700 kB
Downloading: 700 kB
Downloading: 710 kB
Downloading: 710 kB
Downloading: 710 kB
Downloading: 710 kB
Downloading: 710 kB
Downloading: 710 kB
Downloading: 720 kB
Downloading: 720 kB
Downloading: 760 kB
Downloading: 760 kB
Downloading: 760 kB
Downloading: 760 kB
Downloading: 760 kB
Downloading: 760 kB
municipiosSC %>%
ggplot()+
geom_sf(fill = "#2d3e50",
color = "white",
linewidth = 0.03)+
theme_minimal()+
theme(panel.grid = element_blank())
Também podemos colorir o mapa utilizando uma 3a variável, que devemos anexar ao objeto municipiosSC ou estados.
Como exemplo, vamos pegar dados da expectativa de vida para os estados brasileiros:
vida <- utils::read.csv(system.file("extdata/br_states_lifexpect2017.csv", package = "geobr"), encoding = "UTF-8")Vamos unir as informações dos dois dataframes.
minexp = min(vida$ESPVIDA2017)
maxexp = max(vida$ESPVIDA2017)
estados %>%
left_join(vida, by=c("name_state"="uf")) %>%
ggplot()+
geom_sf(aes(fill=ESPVIDA2017), color = "white", linewidth = 0.1)+
scale_fill_distiller(palette = "Reds", name = "%", limits = c(minexp,maxexp))+
theme_void()+
theme(panel.grid = element_blank())
Pacote rnaturalearth para mapas de outros países
Instalar os pacotes rnaturalearthhires e rnaturalearth:
library(devtools)Loading required package: usethis
#devtools::install_github("ropensci/rnaturalearthhires")
#install.packages("rnaturalearth")
#install.packages("rnaturalearthdata")
library(rnaturalearth)Para obter o mapa de um país, por exemplo India:
map1 <- ne_countries(type = "countries", country = "India",
scale = "medium", returnclass = "sf")map1 %>%
ggplot()+
geom_sf()
Para obter o mapa dos Estados de um determinado país:
map2 <- ne_states("India", returnclass = "sf")map2 %>%
ggplot()+
geom_sf()
Exemplo: India
Vamos importar dados de energia solar fotovoltaica na India.
india <- read_xlsx("datamap/importIN.xlsx")Vamos fazer uma breve análise exploratória:
glimpse(india) %>%
kable()Rows: 38
Columns: 15
$ Year <chr> "Andhra Pradesh", "Arunachal Pradesh", "Assam", "Bihar", "Chhat…
$ `2010` <dbl> 0.10, 0.03, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0…
$ `2011` <dbl> 2.10, 0.03, 0.00, 0.00, 0.00, 0.00, 5.00, 0.00, 0.00, 0.00, 0.0…
$ `2012` <dbl> 21.75, 0.03, 0.00, 0.00, 4.00, 0.00, 604.89, 16.80, 0.00, 0.00,…
$ `2013` <dbl> 23.35, 0.03, 0.00, 0.00, 4.00, 0.00, 857.90, 7.80, 0.00, 0.00, …
$ `2014` <dbl> 131.84, 0.03, 0.00, 0.00, 7.10, 0.00, 916.40, 10.30, 0.00, 0.00…
$ `2015` <dbl> 242.86, 0.03, 0.00, 0.00, 7.60, 0.00, 1000.05, 12.80, 0.00, 0.0…
$ `2016` <dbl> 572.96, 0.27, 0.00, 5.10, 93.58, 0.00, 1119.17, 15.39, 0.20, 1.…
$ `2017` <dbl> 1867.23, 0.27, 11.78, 108.52, 128.86, 0.71, 1249.37, 81.40, 0.7…
$ `2018` <dbl> 2195.46, 5.39, 12.45, 142.45, 231.35, 0.91, 1588.00, 216.85, 0.…
$ `2019` <dbl> 3085.68, 5.39, 22.40, 142.45, 231.35, 3.89, 2440.13, 224.52, 22…
$ `2020` <dbl> 3610.02, 5.61, 41.23, 151.57, 231.35, 4.78, 2948.37, 252.14, 32…
$ `2021` <dbl> 4203.00, 5.61, 42.99, 159.51, 252.48, 7.44, 4430.82, 407.83, 42…
$ `2022` <dbl> 4386.76, 11.23, 117.94, 190.63, 518.08, 19.95, 7180.03, 910.63,…
$ `2023` <dbl> 4534.19, 11.64, 147.92, 192.89, 948.82, 26.49, 9254.57, 1029.16…
| Year | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Andhra Pradesh | 0.10 | 2.10 | 21.75 | 23.35 | 131.84 | 242.86 | 572.96 | 1867.23 | 2195.46 | 3085.68 | 3610.02 | 4203.00 | 4386.76 | 4534.19 |
| Arunachal Pradesh | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.27 | 0.27 | 5.39 | 5.39 | 5.61 | 5.61 | 11.23 | 11.64 |
| Assam | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 11.78 | 12.45 | 22.40 | 41.23 | 42.99 | 117.94 | 147.92 |
| Bihar | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 5.10 | 108.52 | 142.45 | 142.45 | 151.57 | 159.51 | 190.63 | 192.89 |
| Chhattisgarh | 0.00 | 0.00 | 4.00 | 4.00 | 7.10 | 7.60 | 93.58 | 128.86 | 231.35 | 231.35 | 231.35 | 252.48 | 518.08 | 948.82 |
| Goa | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.71 | 0.91 | 3.89 | 4.78 | 7.44 | 19.95 | 26.49 |
| Gujarat | 0.00 | 5.00 | 604.89 | 857.90 | 916.40 | 1000.05 | 1119.17 | 1249.37 | 1588.00 | 2440.13 | 2948.37 | 4430.82 | 7180.03 | 9254.57 |
| Haryana | 0.00 | 0.00 | 16.80 | 7.80 | 10.30 | 12.80 | 15.39 | 81.40 | 216.85 | 224.52 | 252.14 | 407.83 | 910.63 | 1029.16 |
| Himachal Pradesh | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.20 | 0.73 | 0.73 | 22.68 | 32.93 | 42.73 | 76.16 | 87.49 |
| Jammu & Kashmir | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1.00 | 1.36 | 1.36 | 14.83 | 19.30 | 20.73 | 54.73 | 49.44 |
| Jharkhand | 0.00 | 0.00 | 4.00 | 16.00 | 16.00 | 16.00 | 16.19 | 23.27 | 25.67 | 34.95 | 38.40 | 52.06 | 88.79 | 105.84 |
| Karnataka | 6.00 | 6.00 | 9.00 | 14.00 | 31.00 | 77.22 | 145.46 | 1027.84 | 4944.12 | 6095.55 | 7277.93 | 7355.17 | 7590.81 | 8241.41 |
| Kerala | 0.03 | 0.03 | 0.84 | 0.03 | 0.03 | 0.03 | 13.04 | 74.20 | 107.94 | 138.59 | 142.23 | 257.00 | 363.18 | 761.44 |
| Ladakh | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 7.80 |
| Madhya Pradesh | 0.10 | 0.10 | 2.10 | 37.32 | 347.17 | 558.58 | 776.37 | 857.04 | 1305.35 | 1840.16 | 2258.46 | 2463.22 | 2717.95 | 2802.14 |
| Maharashtra | 0.00 | 4.00 | 20.00 | 100.00 | 249.25 | 360.75 | 385.76 | 452.37 | 1239.18 | 1633.54 | 1801.80 | 2289.97 | 2631.02 | 4722.90 |
| Manipur | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.03 | 0.06 | 3.44 | 5.16 | 6.36 | 12.25 | 12.28 |
| Meghalaya | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | 0.02 | 0.12 | 0.12 | 0.12 | 4.15 | 4.15 |
| Mizoram | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.10 | 0.10 | 0.20 | 0.50 | 1.52 | 1.53 | 7.90 | 28.01 |
| Nagaland | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.50 | 1.00 | 1.00 | 1.00 | 1.00 | 3.04 | 3.04 |
| Odisha | 0.00 | 0.00 | 13.00 | 13.00 | 30.50 | 31.76 | 66.92 | 79.42 | 79.57 | 394.73 | 397.84 | 401.72 | 451.24 | 453.17 |
| Punjab | 1.33 | 2.33 | 9.33 | 9.33 | 16.85 | 185.27 | 405.06 | 793.95 | 905.62 | 905.62 | 947.10 | 959.50 | 1100.07 | 1167.26 |
| Rajasthan | 0.15 | 5.15 | 197.65 | 552.90 | 730.10 | 942.10 | 1269.93 | 1812.93 | 2332.77 | 3226.79 | 5137.91 | 5732.58 | 12564.87 | 17055.70 |
| Sikkim | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | 0.07 | 0.07 | 4.68 | 4.68 |
| Tamil Nadu | 0.05 | 5.05 | 15.05 | 17.11 | 98.36 | 142.58 | 1061.82 | 1691.83 | 1908.57 | 2575.22 | 3915.88 | 4475.21 | 5067.18 | 6736.43 |
| Telangana | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 61.25 | 527.84 | 1286.98 | 3291.25 | 3592.09 | 3620.75 | 3953.12 | 4520.48 | 4666.03 |
| Tripura | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 5.00 | 5.00 | 5.09 | 5.09 | 5.09 | 9.41 | 9.41 | 14.89 | 17.60 |
| Uttar Pradesh | 0.38 | 0.38 | 12.38 | 17.38 | 21.08 | 71.26 | 143.50 | 336.73 | 694.41 | 960.10 | 1095.10 | 1712.50 | 2244.43 | 2515.22 |
| Uttarakhand | 0.05 | 0.05 | 5.05 | 5.05 | 5.05 | 5.00 | 41.15 | 233.49 | 260.08 | 306.75 | 315.90 | 368.41 | 573.54 | 575.53 |
| West Bengal | 1.15 | 1.15 | 2.05 | 2.05 | 7.05 | 7.21 | 7.77 | 26.14 | 37.32 | 75.95 | 114.46 | 149.84 | 166.00 | 179.98 |
| Andaman & Nicobar | 0.10 | 0.10 | 0.01 | 5.10 | 5.10 | 5.10 | 5.10 | 6.56 | 6.56 | 11.73 | 12.19 | 29.22 | 29.49 | 29.91 |
| Chandigarh | 0.00 | 0.00 | 0.00 | 0.00 | 2.00 | 4.50 | 6.81 | 17.32 | 25.20 | 34.71 | 40.55 | 45.16 | 55.17 | 58.69 |
| Dadar & Nagar Haveli | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2.97 | 5.46 | 5.46 | 5.46 | 5.46 | 5.46 | 5.46 |
| Daman & Diu | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 4.00 | 10.46 | 3.86 | 14.47 | 19.86 | 40.55 | 40.72 | 41.01 |
| Delhi | 0.05 | 2.14 | 2.53 | 2.56 | 5.15 | 5.47 | 14.28 | 40.27 | 69.57 | 126.89 | 165.16 | 192.97 | 211.12 | 218.26 |
| Lakshadweep | 0.75 | 0.75 | 0.75 | 0.75 | 0.75 | 0.75 | 0.75 | 0.71 | 0.75 | 0.75 | 0.75 | 0.75 | 3.27 | 3.27 |
| Puducherry | 0.03 | 0.79 | 0.03 | 0.03 | 0.03 | 0.03 | 0.02 | 0.08 | 0.16 | 3.14 | 5.51 | 9.33 | 13.69 | 35.53 |
| Others | 0.00 | 0.00 | 0.00 | 0.79 | 0.82 | 0.79 | 58.31 | 58.31 | 0.00 | 0.00 | 0.00 | 0.00 | 45.01 | 45.01 |
skimr::skim(india)| Name | india |
| Number of rows | 38 |
| Number of columns | 15 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 14 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| Year | 0 | 1 | 3 | 20 | 0 | 38 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| 2010 | 0 | 1 | 0.27 | 1.00 | 0.00 | 0.00 | 0.00 | 0.05 | 6.00 | ▇▁▁▁▁ |
| 2011 | 0 | 1 | 0.92 | 1.75 | 0.00 | 0.00 | 0.00 | 0.78 | 6.00 | ▇▁▁▁▁ |
| 2012 | 0 | 1 | 24.77 | 101.82 | 0.00 | 0.00 | 0.03 | 8.01 | 604.89 | ▇▁▁▁▁ |
| 2013 | 0 | 1 | 44.38 | 162.77 | 0.00 | 0.00 | 0.39 | 12.08 | 857.90 | ▇▁▁▁▁ |
| 2014 | 0 | 1 | 69.26 | 194.76 | 0.00 | 0.00 | 0.78 | 16.64 | 916.40 | ▇▁▁▁▁ |
| 2015 | 0 | 1 | 98.53 | 237.73 | 0.00 | 0.00 | 4.75 | 53.88 | 1000.05 | ▇▁▁▁▁ |
| 2016 | 0 | 1 | 177.97 | 343.78 | 0.00 | 0.12 | 7.29 | 131.02 | 1269.93 | ▇▁▁▁▁ |
| 2017 | 0 | 1 | 323.39 | 562.96 | 0.00 | 0.72 | 24.70 | 310.92 | 1867.23 | ▇▁▁▁▁ |
| 2018 | 0 | 1 | 569.60 | 1092.11 | 0.00 | 0.93 | 25.44 | 585.83 | 4944.12 | ▇▁▁▁▁ |
| 2019 | 0 | 1 | 741.60 | 1374.44 | 0.00 | 4.19 | 34.83 | 777.90 | 6095.55 | ▇▁▁▁▁ |
| 2020 | 0 | 1 | 911.26 | 1715.51 | 0.00 | 5.47 | 40.89 | 809.79 | 7277.93 | ▇▁▁▁▁ |
| 2021 | 0 | 1 | 1054.88 | 1899.38 | 0.00 | 6.63 | 48.61 | 821.58 | 7355.17 | ▇▁▁▁▁ |
| 2022 | 0 | 1 | 1420.96 | 2741.79 | 0.00 | 13.99 | 103.37 | 1052.71 | 12564.87 | ▇▁▁▁▁ |
| 2023 | 0 | 1 | 1757.38 | 3510.26 | 3.04 | 26.87 | 126.88 | 1132.73 | 17055.70 | ▇▁▁▁▁ |
Precisamos converter as colunas character para numeric:
india <- india %>%
mutate(across(2:15, as.numeric)) %>%
rename(name = Year)
india %>%
kable()| name | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Andhra Pradesh | 0.10 | 2.10 | 21.75 | 23.35 | 131.84 | 242.86 | 572.96 | 1867.23 | 2195.46 | 3085.68 | 3610.02 | 4203.00 | 4386.76 | 4534.19 |
| Arunachal Pradesh | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.03 | 0.27 | 0.27 | 5.39 | 5.39 | 5.61 | 5.61 | 11.23 | 11.64 |
| Assam | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 11.78 | 12.45 | 22.40 | 41.23 | 42.99 | 117.94 | 147.92 |
| Bihar | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 5.10 | 108.52 | 142.45 | 142.45 | 151.57 | 159.51 | 190.63 | 192.89 |
| Chhattisgarh | 0.00 | 0.00 | 4.00 | 4.00 | 7.10 | 7.60 | 93.58 | 128.86 | 231.35 | 231.35 | 231.35 | 252.48 | 518.08 | 948.82 |
| Goa | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.71 | 0.91 | 3.89 | 4.78 | 7.44 | 19.95 | 26.49 |
| Gujarat | 0.00 | 5.00 | 604.89 | 857.90 | 916.40 | 1000.05 | 1119.17 | 1249.37 | 1588.00 | 2440.13 | 2948.37 | 4430.82 | 7180.03 | 9254.57 |
| Haryana | 0.00 | 0.00 | 16.80 | 7.80 | 10.30 | 12.80 | 15.39 | 81.40 | 216.85 | 224.52 | 252.14 | 407.83 | 910.63 | 1029.16 |
| Himachal Pradesh | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.20 | 0.73 | 0.73 | 22.68 | 32.93 | 42.73 | 76.16 | 87.49 |
| Jammu & Kashmir | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1.00 | 1.36 | 1.36 | 14.83 | 19.30 | 20.73 | 54.73 | 49.44 |
| Jharkhand | 0.00 | 0.00 | 4.00 | 16.00 | 16.00 | 16.00 | 16.19 | 23.27 | 25.67 | 34.95 | 38.40 | 52.06 | 88.79 | 105.84 |
| Karnataka | 6.00 | 6.00 | 9.00 | 14.00 | 31.00 | 77.22 | 145.46 | 1027.84 | 4944.12 | 6095.55 | 7277.93 | 7355.17 | 7590.81 | 8241.41 |
| Kerala | 0.03 | 0.03 | 0.84 | 0.03 | 0.03 | 0.03 | 13.04 | 74.20 | 107.94 | 138.59 | 142.23 | 257.00 | 363.18 | 761.44 |
| Ladakh | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 7.80 |
| Madhya Pradesh | 0.10 | 0.10 | 2.10 | 37.32 | 347.17 | 558.58 | 776.37 | 857.04 | 1305.35 | 1840.16 | 2258.46 | 2463.22 | 2717.95 | 2802.14 |
| Maharashtra | 0.00 | 4.00 | 20.00 | 100.00 | 249.25 | 360.75 | 385.76 | 452.37 | 1239.18 | 1633.54 | 1801.80 | 2289.97 | 2631.02 | 4722.90 |
| Manipur | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.03 | 0.06 | 3.44 | 5.16 | 6.36 | 12.25 | 12.28 |
| Meghalaya | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | 0.02 | 0.12 | 0.12 | 0.12 | 4.15 | 4.15 |
| Mizoram | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.10 | 0.10 | 0.20 | 0.50 | 1.52 | 1.53 | 7.90 | 28.01 |
| Nagaland | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.50 | 1.00 | 1.00 | 1.00 | 1.00 | 3.04 | 3.04 |
| Odisha | 0.00 | 0.00 | 13.00 | 13.00 | 30.50 | 31.76 | 66.92 | 79.42 | 79.57 | 394.73 | 397.84 | 401.72 | 451.24 | 453.17 |
| Punjab | 1.33 | 2.33 | 9.33 | 9.33 | 16.85 | 185.27 | 405.06 | 793.95 | 905.62 | 905.62 | 947.10 | 959.50 | 1100.07 | 1167.26 |
| Rajasthan | 0.15 | 5.15 | 197.65 | 552.90 | 730.10 | 942.10 | 1269.93 | 1812.93 | 2332.77 | 3226.79 | 5137.91 | 5732.58 | 12564.87 | 17055.70 |
| Sikkim | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | 0.07 | 0.07 | 4.68 | 4.68 |
| Tamil Nadu | 0.05 | 5.05 | 15.05 | 17.11 | 98.36 | 142.58 | 1061.82 | 1691.83 | 1908.57 | 2575.22 | 3915.88 | 4475.21 | 5067.18 | 6736.43 |
| Telangana | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 61.25 | 527.84 | 1286.98 | 3291.25 | 3592.09 | 3620.75 | 3953.12 | 4520.48 | 4666.03 |
| Tripura | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 5.00 | 5.00 | 5.09 | 5.09 | 5.09 | 9.41 | 9.41 | 14.89 | 17.60 |
| Uttar Pradesh | 0.38 | 0.38 | 12.38 | 17.38 | 21.08 | 71.26 | 143.50 | 336.73 | 694.41 | 960.10 | 1095.10 | 1712.50 | 2244.43 | 2515.22 |
| Uttarakhand | 0.05 | 0.05 | 5.05 | 5.05 | 5.05 | 5.00 | 41.15 | 233.49 | 260.08 | 306.75 | 315.90 | 368.41 | 573.54 | 575.53 |
| West Bengal | 1.15 | 1.15 | 2.05 | 2.05 | 7.05 | 7.21 | 7.77 | 26.14 | 37.32 | 75.95 | 114.46 | 149.84 | 166.00 | 179.98 |
| Andaman & Nicobar | 0.10 | 0.10 | 0.01 | 5.10 | 5.10 | 5.10 | 5.10 | 6.56 | 6.56 | 11.73 | 12.19 | 29.22 | 29.49 | 29.91 |
| Chandigarh | 0.00 | 0.00 | 0.00 | 0.00 | 2.00 | 4.50 | 6.81 | 17.32 | 25.20 | 34.71 | 40.55 | 45.16 | 55.17 | 58.69 |
| Dadar & Nagar Haveli | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2.97 | 5.46 | 5.46 | 5.46 | 5.46 | 5.46 | 5.46 |
| Daman & Diu | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 4.00 | 10.46 | 3.86 | 14.47 | 19.86 | 40.55 | 40.72 | 41.01 |
| Delhi | 0.05 | 2.14 | 2.53 | 2.56 | 5.15 | 5.47 | 14.28 | 40.27 | 69.57 | 126.89 | 165.16 | 192.97 | 211.12 | 218.26 |
| Lakshadweep | 0.75 | 0.75 | 0.75 | 0.75 | 0.75 | 0.75 | 0.75 | 0.71 | 0.75 | 0.75 | 0.75 | 0.75 | 3.27 | 3.27 |
| Puducherry | 0.03 | 0.79 | 0.03 | 0.03 | 0.03 | 0.03 | 0.02 | 0.08 | 0.16 | 3.14 | 5.51 | 9.33 | 13.69 | 35.53 |
| Others | 0.00 | 0.00 | 0.00 | 0.79 | 0.82 | 0.79 | 58.31 | 58.31 | 0.00 | 0.00 | 0.00 | 0.00 | 45.01 | 45.01 |
Tratando os dados:
india %>%
pivot_longer(2:15, names_to = "year", values_to = "mw") %>%
mutate(year = as.numeric(year)) %>%
ggplot(aes(x=year, y=mw, fill=name))+
geom_col()+
facet_wrap(vars(name),
scales = "free_y")+
theme(legend.position = "none")
ggsave("all.jpg",
height = 10,
width = 12)Escolhendo dados de um ano especifico (p.ex. 2015):
minexp = min(india$`2023`)
maxexp = max(india$`2023`)
maxcities <- india %>%
select(name, `2015`) %>%
filter(`2015` > mean(`2015`))
maxcities_sf <- maxcities %>%
left_join(map2)Joining with `by = join_by(name)`
Mapa para 2015:
india2015 <- india %>%
select(1,`2015`) %>%
rename(mw = `2015`) %>%
left_join(map2) %>%
ggplot()+
geom_sf(aes(fill=mw/1000, geometry = geometry), color = "white", linewidth = 0.1)+
geom_text_repel(data = maxcities_sf,
aes(x=longitude,
y=latitude,
label = name),
fontface = "bold",
nudge_x = c(10, -5, 10, -5, -3, -5,5),
nudge_y = c(0.25,-0.25, 6, -0.5, 2,1,1))+
scale_fill_distiller(palette = "Reds",
name = "GW",
limits = c(minexp/1000,maxexp/1000),
direction = 1)+
theme_void()+
theme(panel.grid = element_blank())+
labs(title = "Solar PV Installed Capacity in 2015")Joining with `by = join_by(name)`
india2015
Preparando os dados para 2023:
maxcities <- india %>%
select(name, `2023`) %>%
filter(`2023` > mean(`2023`))
maxcities_sf <- maxcities %>%
left_join(map2)Joining with `by = join_by(name)`
Mapa para 2023:
india2023 <- india %>%
select(1,`2023`) %>%
rename(mw = `2023`) %>%
left_join(map2) %>%
ggplot()+
geom_sf(aes(fill=mw/1000, geometry = geometry),
color = "white", linewidth = 0.1)+
geom_text_repel(data = maxcities_sf,
aes(x=longitude,
y=latitude,
label = name),
fontface = "bold",
nudge_x = c(10, -5, -5, 12, -5,-5,-5,5,-3),
nudge_y = c(0.25,-0.25, 0.5, 8, -0.5,2,-2,2,5))+
scale_fill_distiller(palette = "Reds",
name = "GW",
limits = c(minexp/1000,maxexp/1000),
direction = 1)+
theme_void()+
theme(panel.grid = element_blank())+
labs(title = "Solar PV Installed Capacity in 2023")Joining with `by = join_by(name)`
india2023
Juntando os dois gráficos
india_2015_2023 <- india2015 + india2023 + plot_layout(ncol=1)
india_2015_2023
ggsave("india2015_2023.jpg",
width = 7,
height = 10)Calculando o market share de cada estado:
total <- sum(india$`2023`)
maxcities_total <- sum(maxcities$`2023`)
colnames(maxcities) <- c("name","mw")
other <- data.frame(name = "Other",
mw = total - maxcities_total)
maxcities <- rbind(maxcities, other)
maxcities %>%
mutate(market = round(100*mw/total,2),
mw_2030 = 300000*market/100)# A tibble: 10 × 4
name mw market mw_2030
<chr> <dbl> <dbl> <dbl>
1 Andhra Pradesh 4534. 6.79 20370
2 Gujarat 9255. 13.9 41580
3 Karnataka 8241. 12.3 37020
4 Madhya Pradesh 2802. 4.2 12600
5 Maharashtra 4723. 7.07 21210
6 Rajasthan 17056. 25.5 76620
7 Tamil Nadu 6736. 10.1 30270
8 Telangana 4666. 6.99 20970
9 Uttar Pradesh 2515. 3.77 11310
10 Other 6252. 9.36 28080