以下内容转自 数析学院,原文后续还有 颜色选取、亮度和饱和度设置、自定义调色板、渐变色 等内容,感兴趣的同学可以先直接查看原文
在 R 中,如何使用 ggplot2 来调整数据图像中的颜色?另外,ggplot2 中默认的颜色配置都具有相等的亮度,这有时会使得色块间难以区分,对于色盲朋友们来说是十分不友好的。为了解决这个问题,最好是调用一个具有“色盲模式”的调色板,下面将告诉大家如何做到这一点。
将会用到以下两个示例数据集用于图像生成:
# 双变量
df <- read.table(header=TRUE, text='
cond yval
A 2
B 2.5
C 1.6
')
# 三变量
df2 <- read.table(header=TRUE, text='
cond1 cond2 yval
A I 2
A J 2.5
A K 1.6
B I 2.2
B J 2.4
B K 1.2
C I 1.7
C J 2.3
C K 1.9
')
1、简单颜色分配
在 ggplot2 中,对于线和点的颜色调整我们可以直接改变 colour 参数,如设置 colour=”red” 或其他颜色的名字。而对于一些作为对象填充的颜色,如直方图中条形的颜色,则可以通过改变fill参数来控制,如 fill=”red”。
如果你不想局限于使用一些经典的颜色,我们也可以通过制定色彩代码的方式来指定颜色,如 “#FF6699”。(下文中我们将会给出常见色彩代码的列表。)
library(ggplot2)
# 默认:深色条形
ggplot(df, aes(x=cond, y=yval)) + geom_bar(stat="identity")
# 红色外框线的条形
ggplot(df, aes(x=cond, y=yval)) + geom_bar(stat="identity", colour="#FF9999")
# 红色填充,黑色外框
ggplot(df, aes(x=cond, y=yval)) + geom_bar(stat="identity", fill="#FF9999", colour="black")
# 标准黑色的线与点
ggplot(df, aes(x=cond, y=yval)) +
geom_line(aes(group=1)) + # 组合所有的点,如果不这么做的话我们是看不到直线的
geom_point(size=3)
# 深蓝色的线,红色的点
ggplot(df, aes(x=cond, y=yval)) +
geom_line(aes(group=1), colour="#000099") + # 蓝线
geom_point(size=3, colour="#CC0000") # 红点
2、将变量值映射为颜色
除了对颜色进行全局性的修改,我们也可以将变量值映射为颜色——也就是说我们用颜色来表示某个变量,这么做需要将它置于 aes() 命令之中。
# 条形图:x轴及其填充都取决于变量cond2
ggplot(df, aes(x=cond, y=yval, fill=cond)) + geom_bar(stat="identity")
# 通过另一个数据集构建的条形图;填充色取决于cond2
ggplot(df2, aes(x=cond1, y=yval)) +
geom_bar(aes(fill=cond2), # 填充色取决于cond2
stat="identity",
colour="black", # 为所有元素添加黑色外框线
position=position_dodge()) # 使同组条形紧密排列
# 线与点;填充色取决于cond2
ggplot(df2, aes(x=cond1, y=yval)) +
geom_line(aes(colour=cond2, group=cond2)) + # colour和group都取决于cond2
geom_point(aes(colour=cond2), # colour取决于cond2
size=3) # 较大的数据点,不同的点形状
## 下列代码于上文绘制折线图的效果一致;将"colour=cond2"移至了全局映射aes()中
# ggplot(df2, aes(x=cond1, y=yval, colour=cond2)) +
# geom_line(aes(group=cond2)) +
# geom_point(size=3)
3、色盲模式调色板
下图所示的便是色盲模式调色板,其中一个带有灰色,而另一个则含有黑色。
通过ggplot2,我们可以将调色板存储为一个变量,以方便之后的使用。
# 含灰色的调色板
cbPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
# 含黑色的调色板
cbbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
# 用于改变填充色时,我们需要加入
scale_fill_manual(values=cbPalette)
# 用于改变点线颜色时,我们需要加入
scale_colour_manual(values=cbPalette)
discrete_scale(aesthetics = aesthetic, scale_name = “manual”, palette = pal)
ggplot(df, aes(x=cond, y=yval, fill=cond)) + geom_bar(stat="identity") + scale_fill_manual(values=cbPalette)
我们的色盲模式调色板源自于 http://jfly.iam.u-tokyo.ac.jp/color/:
以上内容转自 数析学院,原文后续还有 颜色选取、亮度和饱和度设置、自定义调色板、渐变色 等内容,感兴趣的同学可以先直接查看原文