本节我介绍2张图,第一张回复群中一位小伙伴的问题,另一位小伙伴提供了我代码跟示例数据,我在此基础上进行了修改,在此表示感谢,第2张图以散点图的形式对英国的气温进行可视化,希望各位观众老爷能够喜欢,群文件中可获取全部数据,喜欢多多转发。再此先行拜谢了
library(tidyverse)
library(magrittr)
library(GGally)
library(lubridate)
read_csv("data.csv") %>% as_tibble() %>%
set_colnames(c("Area","Perimeter","Compactness",
"Length","Width","Asymetry.coef",
"Grove.length","Type")) %>%
mutate(Type=as.factor(Type)) %>%
ggpairs(.,showStrips = T,ggplot2::aes(color=Type)) +
theme(axis.text = element_text(colour = "black", size = 8),
strip.background = element_rect(fill ="grey80"),
strip.text = element_text(colour="black",size =8,
face = "bold"),
panel.background = element_rect(fill='white',colour='black'),
panel.spacing.x = unit(0.1, "cm"),
panel.spacing.y= unit(0.1, "cm"))
下方链接可获取英国的气温数据
data from Met Office https://www.metoffice.gov.uk/research/c limate/maps-and-data/uk-and-regional-series
加载数据
mean_l <- read.delim("uk_mean.xls") %>%
pivot_longer(cols = 2:13,names_to = "month",values_to = "mean")
max_l <- read.delim("uk_max.xls") %>%
pivot_longer(cols = 2:13,names_to = "month",values_to = "max")
min_l <- read.delim("uk_min.xls") %>%
pivot_longer(cols = 2:13,names_to = "month",values_to = "min")
数据清洗
all_sum <- mean_l %>%
left_join(min_l, by = c("year","month")) %>%
left_join(max_l, by = c("year","month")) %>%
filter(year < 2021) %>% group_by(year) %>%
filter(!is.na(min)) %>%
summarise(mean = mean(mean),
min = mean(min),
max = mean(max)) %>%
ungroup()
数据可视化
ggplot(all_sum)+
geom_ribbon(aes(x=year,ymin=min,ymax=max),alpha=0.5,fill="white")+
geom_point(aes(x=year,y=min),colour="#277da1",size=2)+
geom_line(aes(x=year,y=min),colour="#277da1",size=0.5)+
geom_point(aes(x=year,y=max),colour="#f94144",size=2)+
geom_line(aes(x=year,y=max),colour="#f94144",size=0.5)+
geom_point(aes(x=year,y=mean),colour="#00664D",size=3,alpha=0.5)+
geom_smooth(aes(x=year,y=mean),method=lm,se=FALSE,colour="#00664D")+
scale_x_continuous(breaks=c(1880,1900,1920,1940,1960,1980,2000,2020),
labels=c("1880","1900","1920","1940","1960","1980","2000","2020"))+
scale_y_continuous(breaks=c(2,3,4,5,6,7,8,9,10,11,12,13,14),
labels=c("2","","4","","6","","8","","10","","12","","14"))+
labs(x="\nYear",
y=expression("Temperature("*degree*C*")"),
title="英国的年平均温度\n")+
annotate("text",x=1910,y=5.65,label="minimum",colour="#277da1",fontface="bold",size=5)+
annotate("text",x=1910,y=10.3,label="maximum",colour="#f94144",fontface="bold",size=5)+
annotate("text",x=1975,y=9.5,label="mean",
colour="#00664D",fontface="bold",size=5)+
theme_minimal()+
theme(plot.background=element_rect(colour="#2F4858",fill="#2F4858"),
text=element_text(colour="white"),
axis.text=element_text(colour="white",size=14),
axis.title=element_text(size=18),
panel.grid=element_blank(),
axis.ticks=element_line(colour="white"),
axis.line=element_line(colour="white"),
plot.title=element_text(size=20,face="bold",hjust=0.5),
plot.subtitle=element_text(size=18,hjust=0.5,lineheight=1.2),
plot.caption=element_text(size=10),
plot.margin=unit(c(1,1,1,1),"cm"))

