Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >审美不够,配色来凑,数量不够,拿啥来凑?

审美不够,配色来凑,数量不够,拿啥来凑?

作者头像
用户11414625
发布于 2024-12-20 08:46:34
发布于 2024-12-20 08:46:34
9200
代码可运行
举报
文章被收录于专栏:生信星球520生信星球520
运行总次数:0
代码可运行

这个问题分R和python两个部分来讲。

首先是R

配色R包很多,比如ggsci,RcolorBrewer,我最喜欢的当属paletteer,它集百家之长,是大量配色R包的合体。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(paletteer)
paletteer_d("RColorBrewer::Set1")

除了这个之外的选择可以看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
View(palettes_d_names)
颜色数量少就不报错

颜色的数量总是有限的比如这里只有9种颜色,假如你需要10种就会报错啦。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
n = 8

dat = data.frame(cas = LETTERS[1:n],
                 va = rnorm(n))
library(ggplot2)
library(paletteer)
ggplot(dat,aes(cas,va,color = cas))+
  geom_point()+
  scale_color_paletteer_d("RColorBrewer::Set1")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(dat,aes(cas,va,color = cas))+
  geom_point()+
  scale_color_manual(values = paletteer_d("RColorBrewer::Set1"))
颜色数量多了就报错
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#只要n>9就报错啦。
n = 20
dat = data.frame(cas = LETTERS[1:n],
                 va = rnorm(n))
library(ggplot2)
ggplot(dat,aes(cas,va,color = cas))+
  geom_point()+
  scale_color_paletteer_d("RColorBrewer::Set1")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(dat,aes(cas,va,color = cas))+
  geom_point()+
  scale_color_manual(values = paletteer_d("RColorBrewer::Set1"))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Error in `palette()`:
## ! Insufficient values in manual scale. 20 needed but only 9 provided.

报错信息说的很清楚啦,需要20种颜色,但是只提供了9种。

怎么把9种颜色变成20种颜色呢?

难道只能换个配色风格么。当然不是!

其实热图的帮助文档教我们了:

运行这句代码你会发现他就是把RdYlBu分成了100种。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(RColorBrewer)
colorRampPalette(rev(brewer.pal(n = 7, name =
  "RdYlBu")))(100)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##   [1] "#4575B4" "#4979B6" "#4E7DB8" "#5282BB" "#5786BD" "#5C8BBF" "#608FC2"
##   [8] "#6594C4" "#6998C6" "#6E9DC9" "#73A1CB" "#77A6CE" "#7CAAD0" "#80AFD2"
##  [15] "#85B3D5" "#8AB8D7" "#8EBCD9" "#93C0DB" "#98C3DD" "#9CC6DF" "#A1CAE1"
##  [22] "#A6CDE2" "#ABD0E4" "#B0D3E6" "#B4D6E8" "#B9D9E9" "#BEDCEB" "#C3E0ED"
##  [29] "#C8E3EF" "#CCE6F0" "#D1E9F2" "#D6ECF4" "#DBEFF6" "#E0F3F7" "#E1F3F4"
##  [36] "#E3F4F1" "#E5F5ED" "#E7F5EA" "#E9F6E6" "#EBF7E3" "#EDF8DF" "#EFF8DC"
##  [43] "#F0F9D8" "#F2FAD5" "#F4FBD2" "#F6FBCE" "#F8FCCB" "#FAFDC7" "#FCFDC4"
##  [50] "#FEFEC0" "#FEFEBD" "#FEFCBA" "#FEFAB7" "#FEF8B5" "#FEF6B2" "#FEF4AF"
##  [57] "#FEF2AC" "#FEF0A9" "#FEEFA6" "#FEEDA3" "#FEEBA1" "#FEE99E" "#FEE79B"
##  [64] "#FEE598" "#FEE395" "#FEE192" "#FEDF8F" "#FDDA8C" "#FDD589" "#FDD085"
##  [71] "#FDCB82" "#FDC67F" "#FDC17B" "#FDBC78" "#FDB775" "#FCB271" "#FCAD6E"
##  [78] "#FCA86B" "#FCA367" "#FC9E64" "#FC9961" "#FC945D" "#FC8F5A" "#FA8A57"
##  [85] "#F88454" "#F67E51" "#F4794E" "#F1734B" "#EF6D48" "#ED6845" "#EB6242"
##  [92] "#E85D3F" "#E6573C" "#E45139" "#E24C36" "#DF4633" "#DD4030" "#DB3B2D"
##  [99] "#D9352A" "#D73027"

如果但看编号,体会不到着100种颜色具体是什么,但Rstudio的脚本编辑器是可以显示背景色的,把上面的结果复制一下就能显示出来啦。

括号里的数值是几就会变成几种颜色啦!这样就不用频繁的改动代码,换风格。

python里面也是有类似的方法。

然后是python

可搞笑了,我画图时,以为get_camp就是拆分颜色用的,结果当细胞亚群数量多的时候,画出来的图居然有重复色!那不就尴尬了吗,不同的细胞亚群应该是不同的颜色才对的!

探索后发现:颜色是

好嘛,我多要几种颜色,你不给我渐变,你给我重复几次啊!什么玩意。

mcolors.LinearSegmentedColormap.from_list

换了一个函数就好啦

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np
original_colors = plt.cm.Set1(np.linspace(0, 1, 12))
colors = mcolors.LinearSegmentedColormap.from_list('colors', original_colors, N=100)
colors
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
original_colors = plt.cm.twilight(np.linspace(0, 1, 20))
colors = mcolors.LinearSegmentedColormap.from_list('colors', original_colors, N=10)
colors

N=几就是拆分成几种颜色。

拆完之后图上就没有重复色啦

这些配色风格都是来自matplotlib,除了上面用到的twilight和Set1之外还有很多:

以下来自kimi:

matplotlib中,有多种预定义的颜色映射(colormaps),每种颜色映射包含了一系列的颜色。这些颜色映射可以用于图形的着色、数据的可视化等。以下是一些常用的matplotlib颜色映射:

  1. Perceptually Uniform Colormaps:
    • viridis
    • plasma
    • inferno
    • magma
  2. Sequential Colormaps:
    • Greys
    • Blues
    • Greens
    • Oranges
    • Reds
    • Purples
    • Browns
  3. Diverging Colormaps:
    • coolwarm
    • bwr
    • seismic
  4. Cyclic Colormaps:
    • twilight
    • twilight_shifted
    • hsv
  5. Qualitative Colormaps:
    • Set1
    • Set2
    • Set3
    • Accent
    • tab10
    • tab20
    • tab20b
    • tab20c
  6. Miscellaneous Colormaps:
    • flag
    • prism
    • ocean
    • gist_earth
    • terrain
    • nipy_spectral
    • gist_ncar
    • cubehelix

这些颜色映射可以通过matplotlib.cm模块访问。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
这配色方案让人费解啊
randomcoloR和paletteer的使用方式类似,都提供了直观的函数来生成和应用颜色方案。randomcoloR 包可以生成随机的颜色方案,非常适合当你需要快速创建一个颜色方案时使用。
生信技能树
2024/07/05
2310
这配色方案让人费解啊
生信绘图与配色
3.散点- 几何对象: geom_point()函数,size,alpha为控制点属性的参数
用户11008504
2024/07/02
2770
「R」数据可视化22 : 怎么获取CNS级颜色搭配
第一个要介绍的是一个R包,叫做RColorBrewer。该包提供了一系列的色板,包括渐变的颜色和不同颜色的组合搭配(见下图)。
王诗翔呀
2022/01/21
2K0
「R」数据可视化22 : 怎么获取CNS级颜色搭配
paletteer包:拥有2100多个调色板!
ggplot2是目前主流的绘图R包,有着丰富的扩展包。今天来推荐一个极其强大的配色R包——paletteer包。据R包作者介绍,这个包收集了52个R包的2100种调色板,R用户可以通过paletteer[1]包来直接调用其他R包的调色板。下面来学习下怎么使用这个R包[2]。
庄闪闪
2021/06/25
8.3K0
paletteer包:拥有2100多个调色板!
跟小洁老师学习GEO的第三天
差异分析可视化 rm(list = ls()) load(file = "step1output.Rdata") load(file = "step4output.Rdata") # 火山图 library(dplyr) library(ggplot2) dat = distinct(deg,symbol,.keep_all = T) p <- ggplot(data = dat, aes(x = logFC, y = -log10(P.Va
贝诺酯
2023/03/19
3540
🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)
1写在前面 之前介绍了使用ggsci包进行配色,颜值很高,但有时候你可能需要更多的颜色。 本期介绍一下RColorBrewer包,万金油包,几乎适用任何情况。😘 2用到的包 rm(list = ls()) library(tidyverse) library(RColorBrewer) library(patchwork) 3示例数据 本期就用大名鼎鼎的iris吧。 dat <- iris 4查看所有配色 display.brewer.all() ---- Note! 这个包里包含3种配色,s
生信漫卷
2022/10/31
2.1K0
🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)
R语言之可视化①⑦调色板
在基础图中使用RColorBrewer调色板,brewer.pal()函数用于生成颜色矢量。
用户1359560
2019/02/22
4.3K0
R语言之可视化①⑦调色板
气象绘图cmap、cbar超详细版(附示例)
在matplotlib和cartopy中,其常见的绘图命令,若是带有颜色映射的collection(s)类,则基本都可以引入cmap与colorbar功能来分析数据。cmap即是颜色映射表,colorbar即是颜色分析色条,前者只起到对绘图对象上色的功能,后者实现色阶与数值的对应。
自学气象人
2022/11/02
18.2K0
气象绘图cmap、cbar超详细版(附示例)
Learn R GEO
·上下五条线的意思 中间的又黑又粗的—中位数;上下两条线是最大值和最小值;方框的上下两条线是75%和25%(四分位数);在外面的点-离群点
用户10412487
2023/03/28
1.1K0
GEO
生成Group向量的三种常规方法,三选一,选谁就把第几个逻辑值写成T,另外两个为F。如果三种办法都不适用,可以继续往后写else if
浅念
2023/04/04
1.6K0
相关性热图、圈图、弦图(笔记)
如下所示,可以看到有多个样品,每个样品都有多个基因表达量,这个时候我们比较关心的是这些基因的表达量相关性(在多个样品),基因与基因之间有两两组合相关性:
生信技能树
2023/02/27
2.6K0
相关性热图、圈图、弦图(笔记)
Matplotlib从入门到精通05-样式色彩秀芳华
参考: https://datawhalechina.github.io/fantastic-matplotlib/%E7%AC%AC%E4%B8%80%E5%9B%9E%EF%BC%9AMatplotlib%E5%88%9D%E7%9B%B8%E8%AF%86/index.html
用户2225445
2023/10/16
3350
Matplotlib从入门到精通05-样式色彩秀芳华
day5记录 R语言绘图
#此处如果写color = "xxx" 结果是只会出来一种颜色,因为会认为只需要一种颜色
Qianhui Cheng
2025/02/11
790
100+SCI科研绘图系列教程(R和python)
生信学习者
2024/10/22
3890
100+SCI科研绘图系列教程(R和python)
跟着Nature学作图:R语言ggplot2箱线图/散点图完整示例
https://www.nature.com/articles/s41586-022-04808-9#MOESM8
用户7010445
2023/01/06
9810
跟着Nature学作图:R语言ggplot2箱线图/散点图完整示例
零基础用文心一言带你绘制组合图
写着神经网络计算代码,对矩阵计算想整个清晰的展示方式,就想着用 Python 绘制下矩阵运算图。先偷懒一下,看看有没有人分享过代码?
生信宝典
2024/03/12
1540
零基础用文心一言带你绘制组合图
Jely's Note之生信入门class6
【1.当不确定自己输入的代码是否正确时,可以用attach()括号内填入你想使用的数据,这样当你想用a数据里面的某列名字时,可以直接用Tab打出他的名字并且不会出错
用户10556369
2023/05/17
7100
Jely's Note之生信入门class6
R语言可视化——ggplot图表配色技巧
今天跟大家分享ggplot图表的配色原理与基本技巧。 图表配色是一个很深奥的话题,多亏了R语言平台的众多开发者贡献的配色包,让图表的配色不再深不可测。 这里我暂且将所有的配色场景划分为两类: 离散变量配色与连续变量配色 ggplot函数的配色机制相对来说比较智能,当你给colour或者fill属性指定给变量映射的时候,该函数就会自动的区分变量属性(是离散变量或者是连续变量),进而给出适用于两种情况的配色风格。 ggplot(diamonds,aes(carat,price,colour=cut))+geom
数据小磨坊
2018/04/11
3.8K0
R语言可视化——ggplot图表配色技巧
文献组图
追风少年i
2025/01/07
620
文献组图
深入探讨在Matplotlib中自定义颜色映射与标签的实用指南
Matplotlib是Python中广泛使用的绘图库,其强大的功能和灵活性使其成为数据可视化的首选工具之一。在数据可视化中,颜色映射和标签是至关重要的元素,能够显著增强图表的可读性和美观度。本文将深入探讨如何在Matplotlib中自定义颜色映射与标签,并提供详细的代码实例。
一键难忘
2024/10/01
4750
相关推荐
这配色方案让人费解啊
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验