[关闭]
@agpwhy 2021-07-06T06:40:03.000000Z 字数 2256 阅读 589

王胖的生信笔记第12期:整点带颜色的

关于怎么玩儿好ggplot2里颜色,真的有一本书,五十多欧。

https://www.springer.com/de/book/9780387981413#otherversion=9780387981406

我这里肯定讲不出五十多欧的水平,就简单跟着教程给大家过一下一些基本的东西。

玩儿颜色最重要的变量分别是color和fill。

先搞一个颜色

ggplot(chic, aes(x = date, y = temp)) + geom_point(color = "steelblue", size = 2) + labs(x = "Year", y = "Temperature (°F)")

Pic1

ggplot(chic, aes(x = date, y = temp)) + geom_point(shape = 21, size = 2, stroke = 1, color = "chartreuse4", fill = "steelblue") + labs(x = "Year", y = "Temperature (°F)")

Pic2

可以很清楚地看到,color是要比fill要大,fill是不带每个数据点的外框的。

http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

可以用这个参考你需要的颜色

多搞几个颜色

不同数据的颜色选择可以有不同的策略。

是像温度计那样事连续的?还是像分数一样是离散的?是和男女一样是定性的?还是和身高体重一样定量的?

这不同的数据类型就用不同的方式去可视化。

试看此例:

ggplot(chic, aes(x = date, y = temp, color = season)) + geom_point() + labs(x = "Year", y = "Temperature (°F)", color = NULL) + scale_color_manual(values = c("dodgerblue4", "darkolivegreen4", "darkorchid3", "goldenrod1"))

Pic3

季节是一个离散的分类变量。可以在scale_color_manual中手动制定四个颜色给他们。

如果不想自己选择的话,可以在这里选择一些预设好的配色方案。

RColorBrewer::display.brewer.all()

Pic4

把你想选的配色方案写到+ scale_color_brewer(palette = "BrBG")

Pic5

还不满意可以试试paletteer包,ggthemes包,ggsci包

library(ggthemes)

ga + scale_color_tableau()

Pic6

library(ggsci)

g1 <- ga + scale_color_aaas()

g2 <- ga + scale_color_npg()

Pic7

ggsci包括了很多经典杂志的配色。

搞点连续变色

gb <- ggplot(chic, aes(x = date, y = temp, color = temp)) + geom_point() + labs(x = "Year", y = "Temperature (°F)", color = "Temperature (°F):")

可以使用

gb + scale_color_continuous()

gb \+ scale_color_gradient()

来做一些渐变图案

fancy一点的可以这样:

mid <- mean(chic$temp)

gb + scale_color_gradient2(midpoint = mid)

Pic8

如果不满意三个点的颜色,可以使用 + scale_color_gradient2(midpoint = mid, low = "forestgreen", mid = "grey92", high = "steelblue")

Pic9

也可以使用+ scale_color_viridis_c() 来选择配色方案(在括号里写option = “inferno“/”plasma“/“cividis”或者啥都不写)

顺带说一嘴,不连续的可以用+ scale_color_viridis_d 来配色

其他可以用的包

library(rcartocolor)

是使用+ scale_color_carto_c

library(scico)

是使用+ scale_color_scico

scico::scico_palette_names()
[1] "acton" "bamako" "batlow" "berlin" "bilbao" "broc" "brocO" "buda" "cork" "corkO"
[11] "davos" "devon" "grayC" "hawaii" "imola" "lajolla" "lapaz" "lisbon" "nuuk" "oleron"
[21] "oslo" "roma" "romaO" "tofino" "tokyo" "turku" "vik" "vikO"

其他更炫的功能包括在after_scale()中再上一次色

试看此例

library(ggdark)

gplot(chic, aes(date, temp, color = temp)) +
geom_point(size = 5) +
geom_point(aes(color = temp, color = after_scale(invert_color(color))), size = 2) +
scale_color_carto_c(palette = "Teal") +
labs(x = "Year", y = "Temperature (°F)")

Pic11

联合colorspace这个包可以使用invert_color(),lighten(), darken() 和 desature()

Pic12

Pic13

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注