审美不够,配来凑,数量不够,拿啥来凑?
审美不够,配来凑,数量不够,拿啥来凑?
这个问题分R和python两个部分来讲。
首先是R
配R包很多,比如ggsci,RcolorBrewer,我最喜欢的当属paletteer,它集百家之长,是大量配R包的合体。
代码语言:javascript代码运行次数:0运行复制library(paletteer)
paletteer_d("RColorBrewer::Set1")
除了这个之外的选择可以看
代码语言:javascript代码运行次数:0运行复制View(palettes_d_names)
颜数量少就不报错
颜的数量总是有限的比如这里只有9种颜,假如你需要10种就会报错啦。
代码语言:javascript代码运行次数:0运行复制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")
ggplot(dat,aes(cas,va,color = cas))+
geom_point()+
scale_color_manual(values = paletteer_d("RColorBrewer::Set1"))
颜数量多了就报错
代码语言:javascript代码运行次数:0运行复制#只要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")
ggplot(dat,aes(cas,va,color = cas))+
geom_point()+
scale_color_manual(values = paletteer_d("RColorBrewer::Set1"))
代码语言:javascript代码运行次数:0运行复制## Error in `palette()`:
## ! Insufficient values in manual scale. 20 needed but only 9 provided.
报错信息说的很清楚啦,需要20种颜,但是只提供了9种。
怎么把9种颜变成20种颜呢?
难道只能换个配风格么。当然不是!
其实热图的帮助文档教我们了:
运行这句代码你会发现他就是把RdYlBu分成了100种。
代码语言:javascript代码运行次数:0运行复制library(RColorBrewer)
colorRampPalette(rev(brewer.pal(n = 7, name =
"RdYlBu")))(100)
代码语言:javascript代码运行次数:0运行复制## [1] "#4575B4" "#4979B6" "#4E7DB8" "#5282BB" "#5786BD" "#5C8BBF" "#608FC2"
## [8] "#6594C4" "#6998C6" "#6E9DC9" "#7A1CB" "#77A6CE" "#7CAAD0" "#80AFD2"
## [15] "#85BD5" "#8AB8D7" "#8EBCD9" "#9C0DB" "#98CDD" "#9CC6DF" "#A1CAE1"
## [22] "#A6CDE2" "#ABD0E4" "#B0DE6" "#B4D6E8" "#B9D9E9" "#BEDCEB" "#CE0ED"
## [29] "#C8EEF" "#CCE6F0" "#D1E9F2" "#D6ECF4" "#DBEFF6" "#E0FF7" "#E1FF4"
## [6] "#EF4F1" "#E5F5ED" "#E7F5EA" "#E9F6E6" "#EBF7E" "#EDF8DF" "#EFF8DC"
## [4] "#F0F9D8" "#F2FAD5" "#F4FBD2" "#F6FBCE" "#F8FCCB" "#FAFDC7" "#FCFDC4"
## [50] "#FEFEC0" "#FEFEBD" "#FEFCBA" "#FEFAB7" "#FEF8B5" "#FEF6B2" "#FEF4AF"
## [57] "#FEF2AC" "#FEF0A9" "#FEEFA6" "#FEEDA" "#FEEBA1" "#FEE99E" "#FEE79B"
## [64] "#FEE598" "#FEE95" "#FEE192" "#FEDF8F" "#FDDA8C" "#FDD589" "#FDD085"
## [71] "#FDCB82" "#FDC67F" "#FDC17B" "#FDBC78" "#FDB775" "#FCB271" "#FCAD6E"
## [78] "#FCA86B" "#FCA67" "#FC9E64" "#FC9961" "#FC945D" "#FC8F5A" "#FA8A57"
## [85] "#F88454" "#F67E51" "#F4794E" "#F174B" "#EF6D48" "#ED6845" "#EB6242"
## [92] "#E85DF" "#E657C" "#E4519" "#E24C6" "#DF46" "#DD400" "#DBB2D"
## [99] "#D952A" "#D7027"
如果但看编号,体会不到着100种颜具体是什么,但Rstudio的脚本编辑器是可以显示背景的,把上面的结果复制一下就能显示出来啦。
括号里的数值是几就会变成几种颜啦!这样就不用频繁的改动代码,换风格。
python里面也是有类似的方法。
然后是python
可搞笑了,我画图时,以为get_camp就是拆分颜用的,结果当细胞亚数量多的时候,画出来的图居然有重复!那不就尴尬了吗,不同的细胞亚应该是不同的颜才对的!
探索后发现:颜是
好嘛,我多要几种颜,你不给我渐变,你给我重复几次啊!什么玩意。
mcolors.LinearSegmentedColormap.from_list
换了一个函数就好啦
代码语言:javascript代码运行次数:0运行复制import matplotlib.pyplot as plt
import as mcolors
import numpy as np
original_colors = Set1(np.linspace(0, 1, 12))
colors = mcolors.LinearSegmentedColormap.from_list('colors', original_colors, =100)
colors
original_colors = twilight(np.linspace(0, 1, 20))
colors = mcolors.LinearSegmentedColormap.from_list('colors', original_colors, =10)
colors
=几就是拆分成几种颜。
拆完之后图上就没有重复啦
这些配风格都是来自matplotlib,除了上面用到的twilight和Set1之外还有很多:
以下来自kimi:
在matplotlib
中,有多种预定义的颜映射(colormaps),每种颜映射包含了一系列的颜。这些颜映射可以用于图形的着、数据的可视化等。以下是一些常用的matplotlib
颜映射:
- Perceptually Uniform Colormaps:
viridis
plasma
inferno
magma
- Sequential Colormaps:
Greys
Blues
Greens
Oranges
Reds
Purples
Browns
- Diverging Colormaps:
coolwarm
bwr
seismic
- Cyclic Colormaps:
twilight
twilight_shifted
hsv
- Qualitative Colormaps:
Set1
Set2
Set
Accent
tab10
tab20
tab20b
tab20c
- Miscellaneous Colormaps:
flag
prism
ocean
gist_earth
terrain
nipy_spectral
gist_ncar
cubehelix
这些颜映射可以通过模块访问。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:gseapy
下一篇:漂亮的单细胞多组火山图
推荐阅读
留言与评论(共有 5 条评论) |
本站网友 王静雪 | 4分钟前 发表 |
把上面的结果复制一下就能显示出来啦 | |
本站网友 孕周期计算器 | 9分钟前 发表 |
以为get_camp就是拆分颜用的 | |
本站网友 做梦梦见好多蛇 | 27分钟前 发表 |
我画图时 | |
本站网友 站长教程 | 27分钟前 发表 |
体会不到着100种颜具体是什么 |