briefs
ggplot 接受数据框
aes 接受数值变量和因子变量,并映射到坐标轴
labs 简单的修改了一些标签
geom 几何函数输出视觉效果
stat 统计函数背后默默干着事
theme 则控制着“画布”,除了上述受到data影响的其他元素,theme几乎都可以更改
(https://ggplot2-book.org/polishing.html)
theme函数狭义上可以认为一个接口,传递参数就可以修改视觉效果的主题风格。
theme函数其实还包括了一些包装好的主题,例如theme_grey()就是默认出现的主题。
# 调用格式
plot + theme(element.name = element_function())
# theme 调用接口
# element.name 代表特定的修改目标
# elements 则对应着一个修改函数 element_function()用于接受修改参数
# 比如,修改title的颜色,字体,字体大小,位置 等等
theme(plot.title = element_text(colour = "red"))
element.name
element_function()
element_text()
修改labels & titles
# 常用的修改字体的参数
family # 比如 arial字体
face #比如加不加粗
colour # 颜色
size (in points) # 字体大小
hjust #水平移动,传入数值参数
vjust #垂直移动,传入数值参数
angle (in degrees) #旋转角度
lineheight (as ratio of fontcase) #
# More details on the parameters can be found in vignette("ggplot2-specs")
element_line()
draws lines parameterised by colour, linewidth and linetype
plot + theme(panel.grid.major = element_line(colour = "black"))
plot + theme(panel.grid.major = element_line(linewidth = 2))
plot + theme(panel.grid.major = element_line(linetype = "dotted"))
element_rect()
draws rectangles, mostly used for backgrounds, parameterised by fill colour and border colour, linewidth and linetype
plot + theme(plot.background = element_rect(fill = "grey80", colour = NA))
plot + theme(plot.background = element_rect(colour = "red", linewidth = 2))
plot + theme(panel.background = element_rect(fill = "linen"))
element_blank()
draws nothing.可以认为取消默认设置的一些设置,比如下面的把网格线取消
plot + theme(panel.grid.minor = element_blank())
plot + theme(panel.grid.major = element_blank())
Complete themes
还有一个函数 theme_set(theme) ,在这个工作空间下所有的ggplot的主题默认是theme_set()设置的主题。
theme_set(theme_bw())
封装一个看看
mytheme <- theme(
plot.title = element_text(hjust = 0.5,size = 16),
legend.position = "top",
panel.grid.major.y = element_line(colour = "darkblue",linewidth = 0.5,),
panel.grid.minor.y = element_line(colour = "red",linewidth = 0.1,linetype = "dotted"),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
)
ggplot(data = mtcars,aes(x=wt,y=mpg,color=am))+
geom_point()+
labs(title = "Test",x = "Weight",y = "Miles per gallon",color="Type")+
myheme