{"id":955,"date":"2023-11-02T10:28:09","date_gmt":"2023-11-02T10:28:09","guid":{"rendered":"https:\/\/alanleal-econ.com\/?page_id=955"},"modified":"2023-11-08T22:21:38","modified_gmt":"2023-11-08T22:21:38","slug":"guia-curto-de-mapas-no-r","status":"publish","type":"page","link":"https:\/\/alanleal-econ.com\/index.php\/guia-curto-de-mapas-no-r\/","title":{"rendered":"Guia Curto de Mapas no R"},"content":{"rendered":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/pop_dom_metro_viridis-3.tiff\" alt=\"\" class=\"wp-image-1002\" style=\"aspect-ratio:1;width:500px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Este \u00e9 um breve guia de como elaborar mapas est\u00e1ticos no R, visando ao uso em teses, disserta\u00e7\u00f5es, artigos, <em>policy briefs<\/em>, etc. H\u00e1 outras op\u00e7\u00f5es de library, tais como leaflet e plot.ly, caso algu\u00e9m deseje plotar mapas dinamicamente, isto \u00e9, que o plot se alter baseado em algum input real-time do usu\u00e1rio. O present guia curto n\u00e3o lida com esse tipo de mapa.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os mapas produzidos nas Ci\u00eancias Econ\u00f4micas usualmente demandam os mesmos elementos daqueles produzidos na Cartografia. Al\u00e9m da pr\u00f3pria figura do mapa, \u00e9 necess\u00e1rio, com o risco de n\u00e3o mencionar todos os itens, que o mapa possua t\u00edtulo, escala, legenda e orienta\u00e7\u00e3o (rosa dos ventos). Em termos de que vari\u00e1veis os economistas plotam em seus mapas, elas podem ser cont\u00ednuas e categ\u00f3ricas &#8211; discretas. Os valores que uma vari\u00e1vel assume ditam se ela usa uma escala de cores puramente cont\u00ednua, uma escala enfatizando mudan\u00e7as (negativo para positivo, por exemplo), dentre outras op\u00e7\u00f5es gr\u00e1ficas e de design. \u00c9 relevante enfatizar que sempre que se opta por uma escala de cores (em contraposi\u00e7\u00e3o \u00e0 escala em preto e branco), a preocupa\u00e7\u00e3o por uma escala vis\u00edvel para pessoas portadoras de daltonismo \u00e9 relevante em alguma capacidade.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O mapa base e vari\u00e1veis plotados aqui todos adv\u00e9m de uma mesma fonte: BH Maps. Logo, a Prefeitura det\u00e9m o Copyright sobre essas bases de dados e o uso aqui \u00e9 puramente acad\u00eamico. Este site, organizado pela Prefeitura de Belo Horizonte, cont\u00e9m uma multiplicidade de <em>shapefiles<\/em> (arquivos de geometrias diversas). Logo, construiremos ao longo deste texto mapas de Belo Horizonte. A escolha adv\u00e9m da variedade de informa\u00e7\u00f5es georreferenciadas presentes neste site, com formas em pontos, linhas e pol\u00edgonos relacionadas a diferentes assuntos.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O presente texto segue o seguinte formato: (0) shapefiles a e onde obt\u00ea-los (i) plot de um mapa de pontos; (ii) plot de um mapa de linhas; (iii) plot de um mapa de pol\u00edgonos; (iv) combina\u00e7\u00f5es de geometrias; (v) op\u00e7\u00f5es de paletas de cores para mapas; (vi) Conclus\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><em>Shapefiles e onde obt\u00ea-los<\/em><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Os mapas desenhados no presente guia foram obtidos diretamente do site <a href=\"http:\/\/bhmap.pbh.gov.br\/\">http:\/\/bhmap.pbh.gov.br\/<\/a>. Em particular, utiliza-se os shapefiles relacionados a equipamentos culturais (pontos), metr\u00f4 (linha) e popula\u00e7\u00e3o dos bairros em 2010 (pol\u00edgono). Como shapefile base, utiliza-se o limite municipal de Belo Horizonte conforme dispon\u00edvel no pacote geo_br. Este pacote cont\u00e9m shapefiles facilmente acess\u00edveis de munic\u00edpios e estados do Brasil, dentre outras op\u00e7\u00f5es. Ele automatiza o download e o uso de shapefiles pelo R. H\u00e1 diversos outros sites nos quais voc\u00ea encontra outros shapefiles de interesse. Esse \u00e9 o formato padr\u00e3o para dados espaciais.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><em>Plot de geometria de pontos<\/em><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O plot utilizado aqui ser\u00e1 aquele presente no pacote ggplot, na fun\u00e7\u00e3o geom_sf. Usa-se fun\u00e7\u00f5es de outros pacotes para a inser\u00e7\u00e3o de rosa dos ventos e escala. Assim sendo, o mapa dos equipamentos culturais de BH \u00e9 dado por:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/eq_culturais.tiff\" alt=\"\" class=\"wp-image-957\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cujo c\u00f3digo \u00e9 dado por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ggplot() + geom_sf(data=bh)+\n  geom_sf(data=equipamentos_culturais,aes())+\n  labs(x=\"Longitude\", y=\"Latitude\",\n       title=\"Equipamentos Culturais em Belo Horizonte\/MG\")+\n  ggsn::scalebar(data = bh, \n                 location=\"bottomright\", \n                 dist=2, \n                 dist_unit = \"km\", \n                 transform = TRUE, \n                 model = \"GRS80\",\n                 st.size = 2) +\n  ggsn::north(data = bh, \n              location=\"topleft\", \n              symbol = 12, \n              scale = 0.15)+\n  theme_bw()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esse c\u00f3digo consiste em algumas partes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Plot do Mapa: O plot do mapa tem alguns componentes. Usa-se a fun\u00e7\u00e3o geom_sf do pacote ggplot2. Al\u00e9m disso, esse \u00e9 um plot de pontos,logo a op\u00e7\u00e3o aes(thetics) n\u00e3o precisa ser qualificada. O comando labs altera nomes de t\u00edtulo, eixos e legendas possivelmente.&nbsp;<\/li>\n\n\n\n<li>Escala: A escala usada aqui \u00e9 uma das dispon\u00edveis no pacote ggsn. Voc\u00ea tem op\u00e7\u00e3o de mudar sua localiza\u00e7\u00e3o no mapa (<em>location<\/em>), tamanho e apar\u00eancia. O par\u00e2metro \u00e9 usualmente sempre editado quando se lida com mapas de diferentes escalas.<\/li>\n\n\n\n<li>Rosa dos Ventos: A rosa dos ventos \u00e9 tamb\u00e9m aquela dispon\u00edvel no pacote ggsn e utliza-se a op\u00e7\u00e3o 12 para o s\u00edmbolo. O pacote oferece nativamente 14 op\u00e7\u00f5es e voc\u00ea tamb\u00e9m pode escolher a posi\u00e7\u00e3o da rosa de ventos no mapa.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Plot de geometria de linhas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O plot utilizado aqui ser\u00e1 aquele presente no pacote ggplot, na fun\u00e7\u00e3o geom_sf. Usa-se fun\u00e7\u00f5es de outros pacotes para a inser\u00e7\u00e3o de rosa dos ventos e escala. Assim sendo, o mapa da linha de metr\u00f4 em BH \u00e9 dado por:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/metro.tiff\" alt=\"\" class=\"wp-image-958\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cujo c\u00f3digo \u00e9 dado por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ggplot() + geom_sf(data=bh)+\n  geom_sf(data=metro,aes())+\n  labs(x=\"Longitude\", y=\"Latitude\",\n       title=\"Linhas de Metr\u00f4 em Belo Horizonte\/MG\")+\n  ggsn::scalebar(data = bh, \n                 location=\"bottomright\", \n                 dist=2, \n                 dist_unit = \"km\", \n                 transform = TRUE, \n                 model = \"GRS80\",\n                 st.size = 2) +\n  ggsn::north(data = bh, \n              location=\"topleft\", \n              symbol = 12, \n              scale = 0.15)+\n  theme_bw()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O mapa \u00e9 extramenente semelhante ao mapa anterior em termos de possibilidades de customiza\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Plot de geometria de pol\u00edgonos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O plot utilizado aqui ser\u00e1 aquele presente no pacote ggplot, na fun\u00e7\u00e3o geom_sf. Usa-se fun\u00e7\u00f5es de outros pacotes para a inser\u00e7\u00e3o de rosa dos ventos e escala. Assim sendo, o mapa da popula\u00e7\u00e3o de BH \u00e9 dado por:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/pop_dom_viridis-2.tiff\" alt=\"\" class=\"wp-image-996\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cujo c\u00f3digo \u00e9 dado por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ggplot() + geom_sf(data=bh)+\n  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+\n  labs(x=\"Longitude\", y=\"Latitude\",\n       title=\"Popula\u00e7\u00e3o por bairro em Belo Horizonte\/MG\",\n       fill=\"Habitantes por domic\u00edcilo\")+\n  scale_fill_viridis(direction = -1,na.value=\"white\")+\n  ggsn::scalebar(data = bh, \n                 location=\"bottomright\", \n                 dist=2, \n                 dist_unit = \"km\", \n                 transform = TRUE, \n                 model = \"GRS80\",\n                 st.size = 2) +\n  ggsn::north(data = bh, \n              location=\"topleft\", \n              symbol = 12, \n              scale = 0.15)+\n  theme_bw()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para plotar um mapa de pol\u00edgonos, a principal inova\u00e7\u00e3o em termso de c\u00f3digo consiste na op\u00e7\u00e3o <em>fill<\/em>, que indica que os pol\u00edgonos do mapa devem ser preenchidos seguindo os valores da vari\u00e1vel escolhida. No presente caso, a vari\u00e1vel plotada no mapa \u00e9 aquela relacionada ao n\u00famero de habitantes por domic\u00edlio de cada bairro de BH. Uma possibilidade de tema do mapa, al\u00e9m do seu default que usa uma escala padr\u00e3o de azuis, \u00e9 usar o comando scale_fill_viriis que usa as cores desse tema para plotar os mapas. RColorBrewe fornece outras op\u00e7\u00f5es tem\u00e1ticas tamb\u00e9m. Os outros aspectos do mapa s\u00e3o id\u00eanticos \u00e0s op\u00e7\u00f5es de mapas de geometrias de pontos e linhas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Plot de combina\u00e7\u00e3o de geometrias<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Plotemos agora a linha de metr\u00f4 de BH sobre a popula\u00e7\u00e3o dos bairros da cidade. O mapa ser\u00e1:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/pop_dom_metro_viridis-2.tiff\" alt=\"\" class=\"wp-image-997\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cujo c\u00f3digo \u00e9 dado por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ggplot() + geom_sf(data=bh)+\n  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+\n  labs(x=\"Longitude\", y=\"Latitude\",\n       title=\"Popula\u00e7\u00e3o por bairro e Linhas de Metr\u00f4 em Belo Horizonte\/MG\",\n       fill=\"Habitantes por domic\u00edcilo\")+\n  scale_fill_viridis(direction = -1,na.value=\"white\")+\n  ggsn::scalebar(data = bh, \n                 location=\"bottomright\", \n                 dist=2, \n                 dist_unit = \"km\", \n                 transform = TRUE, \n                 model = \"GRS80\",\n                 st.size = 2) +\n  ggsn::north(data = bh, \n              location=\"topleft\", \n              symbol = 12, \n              scale = 0.15)+\n  geom_sf(data=metro,aes())+\n  theme_bw()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este mapa \u00e9 extremamente similar aos casos anteriores no sentido que voc\u00ea precisa usar os comandos para preencher os pol\u00edgonos e desenhar as linhas de metr\u00f4 sobre o mapa brasileiro. O aspecto merecedor de aten\u00e7\u00e3o aqui \u00e9 que a ordem na qual voc\u00ea declara o comando importa. Se voc\u00ea deseja que a linha de metr\u00f4 esteja acima dos pol\u00edgonos de bairros preenchido de acordo com a popula\u00e7\u00e3o por habitante dos bairros, o comando do mapa da linha de metr\u00f4 deve vir ap\u00f3s o comando do mapa da popula\u00e7\u00e3o domiciliar dos bairros. Caso contr\u00e1rio, o R desenhar\u00e1 a linha de metr\u00f4 e por cima dela ele colocar\u00e1 os pol\u00edgonos coloridos de acordo com a vari\u00e1vel escolhida.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Op\u00e7\u00f5es de paletas de cores<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Os pacotes viridis e RBrewerColor cont\u00e9m diversas paletas de cores dispon\u00edveis. O mapa da popula\u00e7\u00e3o dos bairros em BH usado duas paletas diferentes ser\u00e1 dada por:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Viridis<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/pop_dom_viridis-3.tiff\" alt=\"\" class=\"wp-image-999\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cujo c\u00f3digo \u00e9 dado por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ggplot() + geom_sf(data=bh)+\n  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+\n  labs(x=\"Longitude\", y=\"Latitude\",\n       title=\"Popula\u00e7\u00e3o por bairro em Belo Horizonte\/MG\",\n       fill=\"Habitantes por domic\u00edcilo\")+\n  scale_fill_viridis(direction = -1,na.value=\"white\")+\n  ggsn::scalebar(data = bh, \n                 location=\"bottomright\", \n                 dist=2, \n                 dist_unit = \"km\", \n                 transform = TRUE, \n                 model = \"GRS80\",\n                 st.size = 2) +\n  ggsn::north(data = bh, \n              location=\"topleft\", \n              symbol = 12, \n              scale = 0.15)+\n  theme_bw()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. RBrewerColor<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/alanleal-econ.com\/wp-content\/uploads\/2023\/11\/pop_dom_spectral-1.tiff\" alt=\"\" class=\"wp-image-1000\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cujo c\u00f3digo \u00e9 dado por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n_colors &lt;- 7  # Number of colors you want from the palette\nylorbr_colors &lt;- brewer.pal(n_colors, \"Spectral\")\np &lt;- ggplot() + geom_sf(data=bh)+\n  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+\n  labs(x=\"Longitude\", y=\"Latitude\",\n       title=\"Popula\u00e7\u00e3o por bairro em Belo Horizonte\/MG\",\n       fill=\"Habitantes por domic\u00edcilo\")+\n  scale_fill_gradientn(colours = ylorbr_colors, name = \"Cluster\")+\n  ggsn::scalebar(data = bh, \n                 location=\"bottomright\", \n                 dist=2, \n                 dist_unit = \"km\", \n                 transform = TRUE, \n                 model = \"GRS80\",\n                 st.size = 2) +\n  ggsn::north(data = bh, \n              location=\"topleft\", \n              symbol = 12, \n              scale = 0.15)+\n  theme_bw()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Conclus\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Conforme mencionado no t\u00edtulo do post, este foi um guia curto (e n\u00e3o exaustivo) de mapas no R. H\u00e1 uma infinidade de recursos on-line e de mapas poss\u00edveis de produ\u00e7\u00e3o no R. Havendo alguma d\u00favida, me encontro dispon\u00edvel via e-mail: prof at alanleal-econ.com. Outros c\u00f3digos e an\u00e1lises se encontram dispon\u00edveis em meu site: <a href=\"http:\/\/www.alanleal-econ.com\/\">www.alanleal-econ.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este \u00e9 um breve guia de como elaborar mapas est\u00e1ticos no R, visando ao uso em teses, disserta\u00e7\u00f5es, artigos, policy briefs, etc. H\u00e1 outras op\u00e7\u00f5es de library, tais como leaflet e plot.ly, caso algu\u00e9m deseje plotar mapas dinamicamente, isto \u00e9, que o plot se alter baseado em algum input real-time do usu\u00e1rio. O present guia[&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"zakra_general_container_width":0,"zakra_general_content_width":0,"zakra_general_sidebar_width":0,"zakra_sticky_header":"customizer","zakra_header_main_area":true,"zakra_site_logo_width":0,"zakra_header_top_enabled":"customizer","zakra_header_top_style":"customizer","zakra_primary_menu_item_style":"customizer","zakra_page_header_text_color":"","zakra_page_header_layout":"customizer","zakra_page_title_bg":"","zakra_footer_widgets_bg_image":0,"zakra_page_title_bg_repeat":"customizer","zakra_page_title_bg_position":"customizer","zakra_page_title_bg_size":"customizer","zakra_page_title_bg_attachment":"customizer","zakra_breadcrumbs_enabled":"customizer","zakra_breadcrumbs_text_color":"","zakra_breadcrumbs_separator_color":"","zakra_breadcrumbs_link_color":"","zakra_breadcrumbs_link_hover_color":"","zakra_page_title_bg_image":0,"zakra_footer_widgets_enabled":"customizer","zakra_footer_column_layout_1_style":"customizer","zakra_footer_widgets_bg":"","zakra_footer_widgets_bg_repeat":"customizer","zakra_footer_widgets_bg_position":"customizer","zakra_footer_widgets_bg_size":"customizer","zakra_footer_widgets_bg_attachment":"customizer","zakra_footer_bar_enabled":"customizer","zakra_footer_bar_style":"customizer","zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-955","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"zakra-thumb-size-one":false,"zakra-thumb-size-two":false},"uagb_author_info":{"display_name":"Alan Leal","author_link":"https:\/\/alanleal-econ.com\/index.php\/author\/alanmarqueslealhotmail-com\/"},"uagb_comment_info":0,"uagb_excerpt":"Este \u00e9 um breve guia de como elaborar mapas est\u00e1ticos no R, visando ao uso em teses, disserta\u00e7\u00f5es, artigos, policy briefs, etc. H\u00e1 outras op\u00e7\u00f5es de library, tais como leaflet e plot.ly, caso algu\u00e9m deseje plotar mapas dinamicamente, isto \u00e9, que o plot se alter baseado em algum input real-time do usu\u00e1rio. O present guia[&hellip;]","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/pages\/955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/comments?post=955"}],"version-history":[{"count":4,"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/pages\/955\/revisions"}],"predecessor-version":[{"id":1005,"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/pages\/955\/revisions\/1005"}],"wp:attachment":[{"href":"https:\/\/alanleal-econ.com\/index.php\/wp-json\/wp\/v2\/media?parent=955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}