大数跨境
0
0

使用ggplot2给相同的美学分配不同的尺度

使用ggplot2给相同的美学分配不同的尺度 R语言数据分析指南
2021-12-15
0

欢迎关注"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优雅的绘制气泡地图



【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读64
粉丝0
内容1.2k