• R语言地理空间分析(二)制图


    sf对象和sp对象都有自己的绘图函数plot(),但此函数只能实现一些简单的功能,达不到制图的要求,为了地图的美观可以运用tmap

    基础知识

    tmap的说明文档tmap可以识别spsfraster对象。
    tmap包画图的基本函数是tm_shape(),用于确定输入的空间数据,后面+一系列美化地图的函数,如tm_polygons()用于画面属性数据,tm_dots()用于画点属性数据,tm_line()用于画线属性数据,还有tm_fill()tm_legend()函数分别用于填充和图例的设置,更多的函数可以用help("tmap-element")查找

    #tm_fill()用Name属性填充,下图左
    tm<-tm_shape(data)+tm_fill("Name")
    #tm_polygons()画面属性,tm_borders()控制面属性边界,tm_lengend()控制图例,下图中
    tm1<-tm_shape(data)+tm_polygons("Name")+tm_borders()+tm_legend(outside=TRUE)
    #两张图叠加,下图右
    tm2<-tm_shape(data)+tm_polygons()+tm_borders()+tm_legend(outside=TRUE)+
      tm_shape(point)+tm_dots("green",size = 0.5)
    

    图的美化函数

    以下函数都有colalphalwdlty参数用来调节颜色,透明度,线条宽度和线条类型

    tm1<-tm_shape(data)+tm_fill(col = "red")
    tm2<-tm_shape(data)+tm_fill(col = "red",alpha = 0.3)
    tm3<-tm_shape(data)+tm_borders(col = "blue")
    tm4<-tm_shape(data)+tm_borders(lwd = 3)
    tm5<-tm_shape(data)+tm_borders(lty = 2)
    tm6<-tm_shape(data)+tm_fill(col = "red",alpha = 0.3)+tm_borders(col="blue",lwd = 3,lty = 2)
    tmap_arrange(tm1,tm2,tm3,tm4,tm5,tm6)
    

    图的颜色设置

    • breaks用于设置分档线
    • n表示分为几个区间
    • palette表示配色方案,例如BuGn。我们可以用tmaptools::palette_explorer()来发现更多的配色方案。可以在配色方案前加-反转配色顺序,-BuGn
    tm1<-tm_shape(data)+tm_polygons(col = "Mdn_ncm")
    breaks<-c(0,3,4,5)*10000
    tm2<-tm_shape(data)+tm_polygons(col = "Mdn_ncm",breaks=breaks)
    tm3<-tm_shape(data)+tm_polygons(col = "Mdn_ncm",n=10)
    tm4<-tm_shape(data)+tm_polygons(col = "Mdn_ncm",palette="BuGn")
    


    除了breaks可以手动设置区间,tmap包提供了style参数设置不同分区间方法

    • style="pretty",默认设置,整数,将区间均匀隔开
    • style="equal",均匀分布
    • style="quantile"
    • style="jenks",最大化区间间的差异
    • style="cont",适用于栅格数据,连续的颜色渐变
    • style="cat",用于分类,类别数据

    图的布局

    map_nz<-tm_shape(data)+tm_polygons()
    #tm_compass()函数用于设置指北针,tm_scale_bar()用于设置比例尺
    tm1<-map_nz+
      tm_compass(type = "8star",position = c("left","top"))+
      tm_scale_bar(breaks = c(0,100,200),text.size = 1)
    


    函数tm_layout()用于设置各种布局参数,如下:
    下面参数分别设置图的标题,背景颜色和有无框线

    tm1<-map_nz+tm_layout(title = "新西兰",title.position=c("left","top"),title.size=2)
    tm2<-map_nz+tm_layout(scale = 5)
    tm3<-map_nz+tm_layout(bg.color = "lightblue")
    tm4<-map_nz+tm_layout(frame = FALSE)
    

    tm1<-map_nz+tm_layout(title = "frame.lwd=5",inner.margins = 0.1,title.position = c("centre","top"),title.size = 2,
                          legend.position = c("right","bottom"))
    #out.margins表示与窗口边框之间的空白区域
    #inner.margins表示图像和边框的距离
    

    分面图

    tm_facets()函数用于画分面图

    urb_1970_2030 = urban_agglomerations %>% 
      filter(year %in% c(1970, 1990, 2010, 2030))
    
    tm1<-tm_shape(world) +
      tm_polygons() +
      tm_shape(urb_1970_2030) +
      tm_symbols(col = "black", border.col = "white", size = "population_millions") +
      tm_facets(by = "year", nrow = 2, free.coords = FALSE)
    

    动态地图网址

  • 相关阅读:
    设计模式:迭代器模式
    设计模式:观察者模式
    设计模式:解释器模式
    设计模式:策略模式
    设计模式:状态模式
    设计模式:代理模式
    strtok函数
    人们眼中的程序员
    如何用C语言获取文件的大小
    C++著名库的比较和学习经验
  • 原文地址:https://www.cnblogs.com/cqy-wt1124/p/15105460.html
Copyright © 2020-2023  润新知