ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
110 stars 30 forks source link

ggplot2优雅绘制调色板图 #4497

Closed ixxmu closed 7 months ago

ixxmu commented 7 months ago

https://mp.weixin.qq.com/s/syIZxkHLOPscSvPUMcvJJg

ixxmu commented 7 months ago

ggplot2优雅绘制调色板图 by R语言数据分析指南

欢迎关注R语言数据分析指南

本节来介绍如何通过R代码绘制调色板图,大家可根据自己喜爱整理常用的调色板方便后期使用,整个过程仅参考。希望对各位观众老爷能有所帮助。「数据代码已经整合上传到会员交流群」,购买过小编VIP的朋友可在所加的会员群内获取下载,有需要的朋友可关注文末介绍加入VIP交流群。

关于永久群内容的说明

给予长期支持我们的忠实读者们一个特别待遇:凡是购买过小编2022年或2023年VIP会员文档的朋友们,「将自动获得2024年及以后更新的绘图文档代码,无需额外付费。」目前这两年的会员文档已累记卖出1500+,质量方面各位无需担忧。简要概括就是只要购买任意1年的会员内容,2024及后期公众号所更新的绘图文档均会在已经加入的会员群内分享。

加载R包

library(tidyverse)
library(gridExtra)
library(scales)
library(ggsci)

导入数据

hex_df <- read_tsv("col.xls")
rgb_df <- col2rgb(hex_df$color_hex) 
lab_df <- convertColor(t(rgb_df), 'sRGB''Lab')

绘制单个调色板

df <- data.frame(color = hex_df$color_hex[order(lab_df[, 'L'])])

df %>% 
  ggplot(aes(x = color, y = 1, fill = color)) +
  geom_tile() +
  scale_fill_identity() + 
  theme_void() +
  theme(axis.title.x = element_text(size = 10,face="bold",color = "#000000"),
        plot.margin = unit(c(1.75, 1.75, 1.75, 1.75), "cm"),
        plot.background = element_rect(color = NA, fill = "#F2F2F2"))

绘制多个调色板

sci_palettes <- list(aaas=pal_aaas()(10),
                     npg=pal_npg()(10),
                     nejm=pal_nejm()(8),
                     lancet=pal_lancet()(9),
                     jama=pal_jama()(7),
                     jco=pal_jco()(10),
                     d3=pal_d3()(10),
                     locuszoom=pal_locuszoom()(7),
                     uchicago=pal_uchicago()(9),
                     startek=pal_startrek()(7),
                     tron=pal_tron()(7),
                     futurama=pal_futurama()(12),
                     simpsons=pal_simpsons()(16),
                     cosmic=pal_cosmic("hallmarks_light")(10),
                     rickandmorty=pal_rickandmorty("schwifty")(12),
                     flatui=pal_flatui("default")(10),
                     frontiers=pal_frontiers("default")(10),
                     gsea=pal_gsea("default")(12))

为每个调色板创建颜色条

plot_palette <- function(palette_name, colors) {
  df <- data.frame(colors = colors, x = 1:length(colors))
  
  p <- ggplot(df, aes(x = x, y = 1, fill = colors)) +
    geom_tile() + 
    scale_fill_identity() +
    labs(x=NULL,y=NULL)+
    theme_void()+
    theme(plot.title = element_text(size = 10,color="black",vjust=1,hjust=0.5))+
    ggtitle(palette_name)
  
  return(p)
}

可以将日常比较喜欢的颜色整理成相应格式,使用上方代码整合成调色版图进而还可制作成R包方便后期使用,本节介绍到此结束,有需要学习数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」下单购买,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码。购买2023年会员文档后微信发小编订单号即邀请进新的会员交流群

淘宝店铺(有需要欢迎关注)

关注下方公众号下回更新不迷路