之前写了一系列绘图的文档来介绍如何通过ggplot2来绘图,但是对于初学者来说不够友好,因此这一系列将从最基础的一下东西开始写起,希望对大家有所帮助。在此之前请阅读以下2篇文档
https://mp.weixin.qq.com/s/QCSA06xePLJgJ8RyeATQxg
https://mp.weixin.qq.com/s/EwFO7V8o5eO-dTrhJzSh_w
通过上面2篇文档的学习,相应您已经了解了如何安装R包,设置路径及ggplot2的一些关键概念,下面就该读入自己的数据来进行可视化了;在画图之前我们还需要对数据进行格式处理,是否还记得在ggplot2可视化时需要给aes传入2个美学参数,一个作为X另一个为Y,但是我们通常手里边的数据有很多列,在R中将其定义为宽表,而ggplot函数需要的在R中我们定义为长表,因此第一步即:
宽表转长表
如下图所示
下面我们创建数据集来演示一下
df <- data.frame(state = c("Maine", "Massachusetts",
"New Hampshire", "Vermont"),
male_fulltime = c(50329,66066, 59962, 50530),
male_other = c(18099, 18574, 20274, 17709),
female_fulltime = c(40054, 53841, 46178, 42198),
female_other = c(13781, 14981, 15121, 14422))
df
> df
state male_fulltime male_other female_fulltime female_other
1 Maine 50329 18099 40054 13781
2 Massachusetts 66066 18574 53841 14981
3 New Hampshire 59962 20274 46178 15121
4 Vermont 50530 17709 42198 14422
宽表转长表
df2.long <- pivot_longer(df,cols = -state,
names_to = c("sex","work"),
names_sep = "_",
values_to = "income")
df2.long
> df2.long
# A tibble: 16 x 4
state sex work income
<chr> <chr> <chr> <dbl>
1 Maine male fulltime 50329
2 Maine male other 18099
3 Maine female fulltime 40054
4 Maine female other 13781
可以看到通过pivot_longer( )函数很轻松完成了宽表转长表
- pivot_longer()函数有三个主要的参数
- cols,表示哪些列需要转换
- names_to,表示cols选取的这些列的名字,构成了新的一列或多列;需要给定名称
- values_to,表示cols选取的这些列的值,构成了新的一列,同样要给定名称
经过上面的格式转换我们整理好了数据,接下来进行一个简单的可视化
df2.long %>% ggplot(aes(sex,income,fill=state))+
geom_boxplot()+theme_classic()
在某些时刻我们可能还需要进行长表转宽表,让我们通过下面的代码来学习
pivot_wider(df2.long,
names_from = c(sex,work),
values_from = income,
names_sep = ".")
# A tibble: 4 x 5
state male.fulltime male.other female.fulltime female.other
<chr> <dbl> <dbl> <dbl> <dbl>
1 Maine 50329 18099 40054 13781
2 Massachusetts 66066 18574 53841 14981
3 New Hampshire 59962 20274 46178 15121
4 Vermont 50530 17709 42198 14422
经过本节我们初步了解了数据格式的转换,接下来的将继续介绍tidyverse中的其它数据过滤函数
网友评论