ggplot2制作精美地图

作者: R语言数据分析指南 | 来源:发表于2021-04-24 18:05 被阅读0次

    本节我们使用伯克利气候数据绘制2013年的全球温度变化情况。该数据集包含1749年至2013年全球许多城市的平均温度数据

    加载R包

    library(tidyverse)
    

    1.删除AverageTemperature中有缺失值的行

    df <- read_csv("GlobalLandTemperaturesByCity.csv") %>% 
      filter(!is.na(AverageTemperature))
    

    日期列dt是字符类型,使用as.Date()将其转换为日期格式。在这里,我们可以使用将年份提取到一个新变量Year中,as.numeric()将年份从日期格式转换为数字

    df$dt <- as.Date(df$dt)
    
    df$Year <- as.numeric(format(df$dt, format="%Y")
    )
    

    筛选出2013年的数据,对于每个城市每年都会进行几次温度测量使用group_by( )根据城市分组计算平均温度

    df2013 <- df %>% filter(Year == 2013) %>% group_by(City) %>% 
      mutate(mean=mean(AverageTemperature))
    

    纬度和经度以十进制度数给出,N / S指定纬度,E / W来指定经度。出于绘图目的,我们需要将纬度和经度转化为为十进制数,并带有正负号来指定半球。首先,我们使用str_sub( )函数删除最后一个字符,这是纬度或经度字符串的数字部分。然后,我们使用str_extract()查找模式"[aA-zZ]+"来获取字符串的字符部分(N,S,E或W)。现在,纬度和经度的数字部分存储在与(N,S,E或W)不同的变量中,使用ifelse( )为N或E分配正数,为S或W分配负数

    df2013$Latitude_num <- as.numeric(str_sub(df2013$Latitude,1,
                                              nchar(df2013$Latitude)-1))
    df2013$Longitude_num <- as.numeric(str_sub(df2013$Longitude,1,
                                               nchar(df2013$Longitude)-1))
    
    df2013$Latitude_chr <- (str_extract(df2013$Latitude, "[aA-zZ]+"))
    df2013$Longitude_chr <- (str_extract(df2013$Longitude, "[aA-zZ]+"))
    
    df2013 <- within(df2013, {
      Lat <- ifelse(Latitude_chr=="N", Latitude_num, -Latitude_num)
      Long <- ifelse(Longitude_chr=="E", Longitude_num, -Longitude_num)
    })
    

    数据可视化

    world <- map_data("world")
    
    ggplot() + 
      geom_polygon(data = world, aes(x = long, y = lat, group = group), 
                   fill = "lightgray",
                   colour = "white")+
      coord_fixed(1.3)+
      geom_point(data=df2013,aes(Longitude_num,Latitude_num,
    color = AverageTemperature)) +
      geom_jitter() +
      labs(x = " ", y = " ", subtitle = "2013") +
      theme_minimal() +
      scale_color_distiller("Air Temperature",
                            palette = "Spectral",limit=c(-32, 40))  
    

    相关文章

      网友评论

        本文标题:ggplot2制作精美地图

        本文链接:https://www.haomeiwen.com/subject/kkftrltx.html