library(tidyverse)
library(tidyplots)
# 对恐龙数据进行可视化分析
dinosaurs %>%
# 创建一个以生存时间为横轴的图
tidyplot(x = time_lived) %>%
# 添加一个半透明的计数条形图
add_count_bar(alpha = 0.4) %>%
# 添加计数的虚线
add_count_dash() %>%
# 添加计数的点
add_count_dot() %>%
# 添加计数的数值标签
add_count_value() %>%
# 添加计数的连线图
add_count_line()
ggplot2
是基于图层和映射理念,加之管道 (pipe) 语法的助力,能够逻辑清晰地绘制各种图形.然而,ggplot2
也有一些明显的缺点:为了保证其绘图逻辑清晰,即使是很简单的图形也需要较多的代码.
事实上,在多数情况下,尤其是在探索性分析阶段,用户们希望简单敲几个命令就能绘制散点图,直方图,密度函数图等基本图形.只有在正式投稿前,才需要美化图形的细节.
tidyplots
便是基于这一理念构建的.默认情况下,它绘制的图形已达到多数人的需求,若需美化,只需附加 add()
, remove()
, adjust()
三类函数即可.简言之,它的绘图逻辑是:\(基本图形 +「加/减/调」= 新图形\). 正因为如此,同样的图形,tidyplots
的代码量只有 ggplot2
的 1/3 或更少.
1 tidyplots的绘图理念
本质上tidyplots
是对ggplot2
的二次封装,在封装中对ggplot2
的绘图进行了一些默认的美化,它的逻辑分为简单的几个步骤(如 图 1 所示):
tidyplots
也提供了split_plot()
,view_plot()
和save_plot()
等辅助函数对图形进行切割,预览和保存.tidyplots
中所有的函数索引可参看此链接
1.1 add()
族函数
add_*()
函数用于向图中增加不同的图形元素,其作用类似于geom_***()
函数.利用add_*()
函数可以轻松的增加数据点,统计图,均值线,误差条等图形元素.
- 可以看到图形中的x轴还存在严重的重叠现象,我们可以使用
adjust_*()
函数进行调整. -
tidyplots
默认的图形较小,我们可以通过在tidyplot()
函数中将width
和height
两项参数定义为NA
,将出图的大小变为ggplot2
的默认大小.
1.2 adjust_*()
族函数
adjust_*()
函数用于调整图表元素的外观和样式,例如修改颜色,标题,字体,大小等.这些函数有助于细化图表的样式,使其符合特定的设计需求.
dinosaurs %>%
tidyplot(x = time_lived, width = NA, height = NA) %>%
add_count_bar(alpha = 0.4) %>%
add_count_dash() %>%
add_count_dot() %>%
add_count_value() %>%
add_count_line() %>%
# 旋转x轴标签
adjust_x_axis(rotate_labels = 45) %>%
# 调整图形颜色
adjust_colors(c("black", "white"))
1.3 remove_*()
族函数
adjust_*()
函数用于移除图标中不需要的部分,例如图例,坐标轴,标题等.这些操作有助于简化图表或突出显示某些部分,使其符合图形的需求.
dinosaurs %>%
# 依次添加条形图、线、点、值和连线
tidyplot(x = time_lived, width = NA, height = NA) %>%
add_count_bar(alpha = 0.4) %>%
add_count_dash() %>%
add_count_dot() %>%
add_count_value() %>%
add_count_line() %>%
# 旋转x轴标签
adjust_x_axis(rotate_labels = 45) %>%
# 调整图形颜色
adjust_colors(c("black", "white")) %>%
# 移除x轴的刻度线
remove_x_axis_ticks() %>%
# 移除x轴的标题
remove_x_axis_title()
2 顺序修改
在tidyplots
中,除了调整图表的外观(如标题、颜色等),我们还可以通过一组专用的函数来修改图表中数据标签的名称、顺序、排序和反转.与其他调整函数不同,这些函数的名称以 rename_
、reorder_
、sort_
和 reverse_
开头.此外,我们可以使用theme_tidyplot()
,theme_ggplot2()
,theme_minimal_xy()
,theme_minimal_x()
theme_minimal_y()
等函数调用不同主题.
dinosaurs %>%
# 依次添加条形图、线、点、值和连线
tidyplot(x = time_lived, width = NA, height = NA) %>%
add_count_bar(alpha = 0.4) %>%
add_count_dash() %>%
add_count_dot() %>%
add_count_value() %>%
add_count_line() %>%
theme_minimal_xy() %>%
# 旋转x轴标签
adjust_x_axis(rotate_labels = 45) %>%
# 调整图形颜色
adjust_colors(c("black", "white")) %>%
# 移除x轴的刻度线
remove_x_axis_ticks() %>%
# 移除x轴的标题
remove_x_axis_title()
3 tidyplots和ggplot2连用
我们可以再tidyplots
代码的基础上添加ggplot2
代码,以实现细节的调整.
dinosaurs %>%
# 依次添加条形图、线、点、值和连线
tidyplot(x = time_lived, width = NA, height = NA) %>%
add_count_bar(alpha = 0.4) %>%
add_count_dash() %>%
add_count_dot() %>%
add_count_value() %>%
add_count_line() %>%
# 旋转x轴标签
adjust_x_axis(rotate_labels = TRUE) %>%
# 调整图形颜色
adjust_colors(c("black", "white")) %>%
theme_ggplot2() %>%
add(ggplot2::theme(axis.text.x = ggplot2::element_text(
size = 7, color = "red", angle = 45, hjust = 1, vjust = 1
))) %>%
# 移除x轴的刻度线
remove_x_axis_ticks() %>%
# 移除x轴的标题
remove_x_axis_title()
4 示例
我们通过一个完整的例子来看看tidyplots
包的作图逻辑和思路。
tidyplots::study %>%
tidyplot(
x = treatment, y = score, color = treatment,
width = NA, height = NA) %>% # 创建绘图空间
add_data_points() %>% # 根据源数据,增加散点
add_mean_bar(alpha = 0.4) %>% # 将各组数据的平均值绘制柱形图
add_sem_errorbar() %>% # 绘制误差线,sem为standard error of mean.
adjust_title("This is my fantastic plot title") %>% # 添加图形标题
adjust_x_axis_title("Trearment group") %>%
adjust_y_axis_title("Disease score") %>%
adjust_legend_title() %>%
adjust_colors(new_colors = colors_discrete_seaside) %>%
rename_x_axis_labels(
new_names = c(
"A" = "a",
"B" = "b",
"C" = "c",
"D" = "d"
)
) %>%
sort_x_axis_labels() %>%
reverse_x_axis_labels() %>%
theme_tidyplot(fontsize = 15)