❝通常绘图在进行分面操作时,有时需要将面板间距设置为0,通过这样的操作会减小面板间间距,但是也会产生一个问题,即面板间的轴线会叠在一起形成一条粗线。在默认的theme函数中想要去除面板间的轴线则会发现axis.line.y等主题设置项会不执行操作,若使用theme_classic()主题的结果则会使得最右侧会缺少一条轴线。那么该如何自定义设置theme函数来达到所需的效果哪,请看下方案例。 ❞
library(tidyverse)
mpg %>% filter(drv %in% c("f","r")) %>%
ggplot(., aes(x = displ, y = hwy, color = class)) +
geom_point()+
facet_wrap(.~drv,nrow=1)+
theme_bw()+
theme(plot.background = element_rect(fill="white"), # 控制整个图形背景
panel.background = element_rect(fill="white"), # 控制图形绘图面板背景
panel.grid.major = element_blank(), # 移除主网格线
panel.grid.minor = element_blank(),
panel.spacing.x=unit(0,"cm"),
strip.background.x =element_rect(fill="grey",color="black"))
使用此主题后会发现右侧会缺少一条线
mpg %>% filter(drv %in% c("f","r")) %>%
ggplot(., aes(x = displ, y = hwy, color = class)) +
geom_point()+
facet_wrap(.~drv,nrow=1)+
theme_classic()+
theme(plot.background = element_rect(fill="white"), # 控制整个图形背景
panel.background = element_rect(fill="white"), # 控制图形绘图面板背景
panel.grid.major = element_blank(), # 移除主网格线
panel.grid.minor = element_blank(),
panel.spacing.x=unit(0,"cm"),
strip.background.x =element_rect(fill="grey",color="black"))
若要使右侧的线条可以通过主题元素进行自定义,我们可以通过添加一条辅助轴线的方式来将Y轴右侧轴线变为实际可操作的元素。
mpg %>% filter(drv %in% c("f","r")) %>%
ggplot(., aes(x = displ, y = hwy, color = class)) +
geom_point()+
scale_y_continuous(sec.axis = sec_axis(~ ., name = ""))+
facet_wrap(.~drv,nrow=1)+
theme(plot.background = element_rect(fill="white"), # 控制整个图形背景
panel.background = element_rect(fill="white"), # 控制图形绘图面板背景
panel.grid.major = element_blank(), # 移除主网格线
panel.grid.minor = element_blank(), # 移除网格线
panel.spacing.x=unit(0,"cm"),
strip.background.x =element_rect(fill="grey",color="black"),
axis.line.x=element_line(color="black"),
axis.line.y.left = element_line(color="black"),
axis.line.y.right = element_line(color="black"),
axis.text.y.right = element_blank(),
axis.ticks.y.right = element_blank())
❝本节介绍到此结束,很小的一个细节调整也许在某时会有用处。更多内容持续更新中 ❞