欢迎关注"R数据分析指南"
本节来介绍如何为一种美学分配不同的sacle,即颜色或填充色,下面通过几个小栗子来进行演示
安装并加载R包
package.list=c("tidyverse","ggnewscale","ggsci")
for (package in package.list) {
if (!require(package,character.only=T, quietly=T)) {
install.packages(package)
library(package, character.only=T)
}
}
先来看看R中的图形的形状
-
可以看到21--25号形状可自定义设置边框和填充颜色
案例一
ggplot(mpg, aes(displ,hwy,fill=drv,color=drv)) +
geom_point(size=2,pch=21)+
geom_smooth(method = lm, formula = y ~ splines::bs(x, 3),
se = FALSE,fullrange=TRUE,aes(color=drv))+
facet_wrap(.~drv,scales = "free_x",nrow = 3,strip.position = "left")+
scale_fill_npg()+
scale_color_jco()+
theme(legend.position = "non")
上图中将drv分别映射到了fill & color ,从而点的填充颜色与拟合曲线颜色不一致,但是点的边框颜色与拟合曲线颜色一致;可以通过stroke=NA来移除点的边框
ggplot(mpg, aes(displ,hwy,fill=drv,color=drv)) +
geom_point(size=2,pch=21,color="white")+ # 定义边框颜色为白色
geom_smooth(method = lm, formula = y ~ splines::bs(x, 3),
se = FALSE,fullrange=TRUE,aes(color=drv))+
facet_wrap(.~drv,scales = "free_x",nrow = 3,strip.position = "left")+
scale_fill_npg()+
scale_color_jco()+
theme(legend.position = "non")
那如何为相同的美学(例如颜色)分配两种不同的尺度,可以使用ggnewscale包通过函数重新定义颜色,为同一美学分配多种颜色
ggplot(mpg, aes(displ,hwy,color=drv)) +
geom_point(pch=20,size=3)+
scale_color_jco()+
new_scale_color() +
geom_smooth(method = lm, formula = y ~ splines::bs(x, 3),
se = FALSE,fullrange=TRUE,aes(color=drv))+
scale_color_npg()+
facet_wrap(.~drv,scales = "free_x",nrow = 3,strip.position = "left")+
theme(legend.position = "non")
-
通过下图可以看到成功的为同一美学分配了不同的颜色
经典案例
topography <- expand.grid(x = 1:nrow(volcano),
y = 1:ncol(volcano))
topography$z <- c(volcano)
set.seed(42)
measurements <- data.frame(x = runif(30, 1, 80),
y = runif(30, 1, 60),
thing = rnorm(30))
ggplot(mapping = aes(x, y)) +
geom_contour(data = topography, aes(z = z, color = stat(level))) +
scale_color_viridis_c(option = "D") +
new_scale_color() +
geom_point(data = measurements, size = 3, aes(color = thing)) +
scale_color_viridis_c(option = "A")
喜欢的小伙伴欢迎分享转发,欢迎大家扫描下方二位码加入我的交流群持续分享更多优质资源

关注下方公众号下回更新不迷路,如需要加入微信交流群,请在菜单栏处添加作者微信,备注单位+方向+姓名即可邀您进群;公众号主要分享生物信息学与R语言数据可视化的经典案例,希望对大家有所帮助
R语言学习资源汇总,200多本经典书籍分享
ggplot2优雅的创建字母显著性标记图
R优雅的绘制(进阶版树状图)
使用R优雅的绘制美美的树状网络图
极简方法! 一行代码添加p值
围观!8+ SCI全文复现
手把手教你使用circlize绘制热图
ggplot2优雅的绘制气泡地图

