本节我们使用伯克利气候数据绘制2013年的全球温度变化情况。该数据集包含1749年至2013年全球许多城市的平均温度数据
data:https://www.kaggle.com/berkeleyearth/climate-change-earth-surface-temperature-data
加载R包
library(tidyverse)
删除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)
})
数据可视化
使用map_data(world),这将创建一个数据框,其中包含用于绘制每个国家/地区的信息。然后,通过ggplot()以创建一个画布,使用geom_polygon()将国家/地区添加到地图。使用已经处理好的df2013的数据将平均温度点添加到地图中。geom_jitter()设置点的抖动分隔原本会在地图上重叠的点
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))
往期精彩:
配置R与Rstudio
ggplot2中的一些关键概念
tidyverse的基础使用
ggplot2绘制终极版热图
ggtree绘制进化树
初探相关性热图
再探相关性热图
ggplot2绘制相关性热图
初探柱状图
绘制具有显著性的条形图
ggplo2绘制经典条形图
ggplo2绘制双误差线条行图
揭开ggplot2中stat图层的神秘面纱
R中的图片注释神包aplot
ggplot2使用patchwork高质量拼图
ggplot2绘制基础散点图
ggplot2绘制经典散点图-1
ggplot2绘制经典散点图-2
ggplot2绘制云雨图
ggplot2绘制经典云雨图
ggplot2绘制哑铃图
ggplot2绘制经典哑铃图
ggplot2添加git

