楼主: casey_c
15277 4

[学习分享] ggplot2 调整图像颜色 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.0091
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在 R 中,如何使用 ggplot2 来调整数据图像中的颜色?另外,ggplot2 中默认的颜色配置都具有相等的亮度,这有时会使得色块间难以区分,对于色盲朋友们来说是十分不友好的。为了解决这个问题,最好是调用一个具有“色盲模式”的调色板,下面将告诉大家如何做到这一点。
将会用到以下两个示例数据集用于图像生成:



  1. # 双变量
  2.     df <- read.table(header=TRUE, text='
  3.      cond yval
  4.         A 2
  5.         B 2.5
  6.         C 1.6
  7.     ')
  8.    
  9.     # 三变量
  10.     df2 <- read.table(header=TRUE, text='
  11.      cond1 cond2 yval
  12.         A      I 2
  13.         A      J 2.5
  14.         A      K 1.6
  15.         B      I 2.2
  16.         B      J 2.4
  17.         B      K 1.2
  18.         C      I 1.7
  19.         C      J 2.3
  20.         C      K 1.9
  21.     ')
复制代码
1、[size=18.004px]简单颜色分配


在 ggplot2 中,对于线和点的颜色调整我们可以直接改变 colour 参数,如设置 colour="red" 或其他颜色的名字。而对于一些作为对象填充的颜色,如直方图中条形的颜色,则可以通过改变fill参数来控制,如 fill="red"

如果你不想局限于使用一些经典的颜色,我们也可以通过制定色彩代码的方式来指定颜色,如 "#FF6699"。(下文中我们将会给出常见色彩代码的列表。)

  1. library(ggplot2)
  2.     # 默认:深色条形
  3.     ggplot(df, aes(x=cond, y=yval)) + geom_bar(stat="identity")
  4.     # 红色外框线的条形
  5.     ggplot(df, aes(x=cond, y=yval)) + geom_bar(stat="identity", colour="#FF9999")
  6.     # 红色填充,黑色外框
  7.     ggplot(df, aes(x=cond, y=yval)) + geom_bar(stat="identity", fill="#FF9999", colour="black")
  8.    
  9.    
  10.     # 标准黑色的线与点
  11.     ggplot(df, aes(x=cond, y=yval)) +
  12.         geom_line(aes(group=1)) +     # 组合所有的点,如果不这么做的话我们是看不到直线的
  13.         geom_point(size=3)
  14.     # 深蓝色的线,红色的点
  15.     ggplot(df, aes(x=cond, y=yval)) +
  16.         geom_line(aes(group=1), colour="#000099") +  # 蓝线
  17.         geom_point(size=3, colour="#CC0000")         # 红点
复制代码

1.png

2.png 3.png 4.png 5.png

2、将变量值映射为颜色

除了对颜色进行全局性的修改,我们也可以将变量值映射为颜色——也就是说我们用颜色来表示某个变量,这么做需要将它置于 aes() 命令之中。

  1. # 条形图:x轴及其填充都取决于变量cond2
  2.     ggplot(df, aes(x=cond, y=yval, fill=cond)) + geom_bar(stat="identity")
  3.    
  4.     # 通过另一个数据集构建的条形图;填充色取决于cond2
  5.     ggplot(df2, aes(x=cond1, y=yval)) +
  6.         geom_bar(aes(fill=cond2),   # 填充色取决于cond2
  7.                  stat="identity",
  8.                  colour="black",    # 为所有元素添加黑色外框线
  9.                  position=position_dodge()) # 使同组条形紧密排列
  10.    
  11.     # 线与点;填充色取决于cond2
  12.     ggplot(df2, aes(x=cond1, y=yval)) +
  13.         geom_line(aes(colour=cond2, group=cond2)) + # colour和group都取决于cond2
  14.         geom_point(aes(colour=cond2),               # colour取决于cond2
  15.                    size=3)                          # 较大的数据点,不同的点形状
  16.     ## 下列代码于上文绘制折线图的效果一致;将"colour=cond2"移至了全局映射aes()中
  17.     # ggplot(df2, aes(x=cond1, y=yval, colour=cond2)) +
  18.     #    geom_line(aes(group=cond2)) +
  19.     #    geom_point(size=3)
复制代码

6.png

7.png 8.png

3、色盲模式调色板

下图所示的便是色盲模式调色板,其中一个带有灰色,而另一个则含有黑色。

9.png

通过ggplot2,我们可以将调色板存储为一个变量,以方便之后的使用。

  1. # 含灰色的调色板
  2.     cbPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
  3.    
  4.     # 含黑色的调色板
  5.     cbbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
  6.    
  7.     # 用于改变填充色时,我们需要加入
  8.       scale_fill_manual(values=cbPalette)
  9.    
  10.     # 用于改变点线颜色时,我们需要加入
  11.       scale_colour_manual(values=cbPalette)
复制代码
discrete_scale(aesthetics = aesthetic, scale_name = "manual",     palette = pal)
  1. ggplot(df, aes(x=cond, y=yval, fill=cond)) + geom_bar(stat="identity") + scale_fill_manual(values=cbPalette)
复制代码
10.png 我们的色盲模式调色板源自于 http://jfly.iam.u-tokyo.ac.jp/color/: 11.png
以上内容转自 数析学院,原文后续还有 颜色选取、亮度和饱和度设置、自定义调色板、渐变色 等内容,感兴趣的同学可以先直接查看原文
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot GPL 如何使用 调色板 朋友 如何 色盲 友好

沙发
cheetahfly 在职认证  发表于 2017-1-17 11:38:50 |只看作者 |坛友微信交流群
Good

使用道具

藤椅
casey_c 发表于 2017-1-17 13:03:32 |只看作者 |坛友微信交流群
cheetahfly 发表于 2017-1-17 11:38
Good

使用道具

板凳
lxy444 学生认证  发表于 2017-1-17 22:18:15 |只看作者 |坛友微信交流群
棒,感谢楼主分享

使用道具

报纸
casey_c 发表于 2017-1-18 10:06:55 |只看作者 |坛友微信交流群
lxy444 发表于 2017-1-17 22:18
棒,感谢楼主分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 09:26