ggplot2 颜色

不想你离开。 提交于 2020-01-11 04:15:17
  1. 查看ggplot2 支持的色带
library(RColorBrewer)
display.brewer.all(type = "seq")
display.brewer.all(type = "div")
display.brewer.all(type = "qual")
  1. 翻转色带
# define a color rmap palette
colr = colorRampPalette(rev(brewer.pal(8,"RdYlBu")))   # reverse colorbar   rev()
  1. 自定义色带和色带标签
scale_fill_brewer(name="Modeling year",type='qual',palette=7,direction=1) 

7.2 颜色fill/color,灰度grey,色相hue, 色盲颜色

在这里插入图片描述
在这里插入图片描述
参数解释:

  • type 在scale_color_continuous中表示指定变化类型,是普通渐变“gradient”还是色盲渐变“viridis”
    在scale_xxx_distiller()中表示指定色板类型,是“seq”渐变,“qual”离散对比,还是“div”两极色板
  • palette 表示指定色条类型,当type色板类型已经指定的情况下,可以用序号指定,若type未指定,则必须用色条名称指定
  • direction 表示指定标度与变量的匹配方向,direction=-1表示方向翻转 在scale_xxx_hue()中,direction=1表示色轮的顺时针方向,direction=-1表示逆时针方向
  • low, high表示渐变的颜色两极颜色名称或HEX色值,如果用颜色名称指定,则可用muted(“color”)指定某个暗色
  • mid 表示指定渐变的中点颜色
  • midpoint 表示指定渐变的中点对应的变量值
  • colors/colours 多色渐变中,指定颜色向量, 如colour = terrain.colors(10)取10个地形图颜色作为渐变的基础色
  • values 表示指定自定义颜色向量,如果变量为数字类型,则默认按数字大小顺序与values匹配,
    如果变量为字符类型,则默认按变量字母顺序与values匹配,
    为了按照想要的顺序匹配,可以给变量增加一个因子水平,然后自动按照因子水平与values匹配(自上而下,由低到高)
    也可给values向量设置名称属性,名称与要映射的变量值一样,然后按照名称属性匹配
  • range 表示指定指定显示的透明度范围,在[0, 1]区间内,0表示不透明,1表示不透明
  • limits 表示设定显示范围
  • breaks 表示设定图例刻度位置
  • labels 表示指定图例刻度处显示标签
  • h 表示指定色相范围,在区间[0, 360]内
  • c 表示指定chroma(色度,鲜艳或是暗淡)值,最大值取决于hue和luminance
  • l 表示指定luminance(亮度),在区间[0, 100]内
  • start 表示指定灰度起点,从0到1,0表示白色,1表示黑色
  • end 表示灰度结束点,通常end,默认end更黑,若设定start>end,则翻转标度
  • end 表示灰度结束点,通常end,默认end更黑
  • 其它公共参数:name图例名称,palette, breaks, labels, limits, expand, position(标签在图例的上)
  • 只有连续的标度函数,如

scale_xxx_gradient^()才支持trans内置参数

在这里插入图片描述

7.2.1 color/fill

library(ggplot2)

# scale_fill_continuous
v <- ggplot(faithfuld, aes(waiting, eruptions, fill = density)) + geom_tile()
v
v + scale_fill_continuous(type = "gradient", name = "密度", breaks = c(0, 0.05, 
    0.01, 0.02, 0.03, 0.04), labels = c(0, 0.05, 0.01, 0.02, 0.03, 0.04), position = "left")  # 更改图例名称,不支持刻度点,图例标签位置,匹配方向等参数
v + scale_fill_continuous(type = "viridis")  # 结果与scale_fill_viridis_c()一样

# scale_color_distiller
set.seed(19)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
(d <- ggplot(dsamp, aes(carat, price)) + geom_point(aes(colour = clarity)))
v <- ggplot(faithfuld) + geom_tile(aes(waiting, eruptions, fill = density))
v
v + scale_fill_distiller(palette = "Spectral", breaks = c(0, 0.05, 0.01, 0.02, 
    0.03, 0.04), labels = c(0, 0.05, 0.01, 0.02, 0.03, 0.04))  # 更改图例刻度及标签失败

# scale_xxx_gradient^()
set.seed(18)
df <- data.frame(x = runif(100), y = runif(100), z1 = rnorm(100), z2 = abs(rnorm(100)))

ggplot(df, aes(x, y)) + geom_point(aes(colour = z2))  # 默认从light blue到dark blue

ggplot(df, aes(x, y)) + geom_point(aes(colour = z2)) + scale_colour_gradient(low = "white", 
    high = "black", name = "这是图例名称", breaks = c(0, 0.5, 1, 2, 3, 4), labels = c(0, 
        0.5, 1, 2, 3, 4))  # 灰度渐变,修改图例名称,图例刻度及刻度标签

ggplot(df, aes(x, y)) + geom_point(aes(colour = z1), size = 2) + scale_colour_gradient2()  # 两极渐变,

ggplot(df, aes(x, y)) + geom_point(aes(fill = z2), shape = 21, size = 3) + scale_fill_gradient2(low = "blue", 
    mid = "red", midpoint = 2, high = "cyan", name = "这是图例名称")  # 修改基础颜色,

ggplot(df, aes(x, y)) + geom_point(aes(colour = z1)) + scale_colour_gradientn(colours = terrain.colors(10), 
    name = "这是图例名称")  # 应用terrain.colors内置色板,更改标度方向失败

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
默认从light blue到dark blue:

在这里插入图片描述
灰度渐变,修改图例名称,图例刻度及刻度标签:

在这里插入图片描述
两极渐变:
在这里插入图片描述
修改基础颜色:
在这里插入图片描述
应用terrain.colors内置色板,更改标度方向失败:
在这里插入图片描述

library(ggplot2)

# scale_color_brewer
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
(d <- ggplot(dsamp, aes(carat, price)) + geom_point(aes(colour = clarity)))
d + scale_colour_brewer(name = "钻石透明度", palette = "Greens", direction = -1, 
    position = "left")  # 更改图例名称,色板,标度方向,更改位置失败
d + scale_colour_brewer(palette = "Set1", name = "钻石透明度")  # 多种颜色也可以渐变,非常方便

# scale_color_manual
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point(aes(colour = factor(cyl)))
p + scale_colour_manual(values = c("red", "blue", "green"))

# 按名称属性匹配
cols <- c(`8` = "red", `4` = "blue", `6` = "darkgreen", `10` = "orange")  # 设定名称属性
p + scale_colour_manual(values = cols)  # 名称属性匹配

p + scale_colour_manual(name = "这是图例名字", values = cols, breaks = c("4", 
    "6", "8"), labels = c("four", "six", "eight"), limits = c("4", "6", "8", 
    "10"))

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
自定义颜色:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.2.2 透明度、色相、灰度

library(ggplot2)

p <- ggplot(mpg, aes(displ, hwy)) +
  geom_point(aes(alpha = year))
p
p + scale_alpha(range = c(0.4, 0.8), name = "这是图例名称") # 设定透明度范围为0.4到0.8

dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
d <- ggplot(dsamp, aes(carat, price)) + geom_point(aes(colour = clarity))

d + scale_colour_hue(name = "这是图例名称") # 默认全色轮
d + scale_colour_hue(l = 70, c = 150, name = "这是图例名称")# 调整色度和亮度
d + scale_colour_hue(h = c(0, 90), "这是图例名称") # 设定色相范围,0代表红色与橙色的分界 
d + scale_colour_hue(h = c(90, 180), "这是图例名称")
d + scale_colour_hue(h = c(270, 360), "这是图例名称")

# 灰度
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point(aes(colour = factor(cyl)))
p + scale_colour_grey()
p + scale_colour_grey(start = 0.8, end = 0.2, name = "这是图例名称") # 修改灰度范围

# 灰度增加缺失值映射
miss <- factor(sample(c(NA, 1:5), nrow(mtcars), replace = TRUE))
ggplot(mtcars, aes(mpg, wt)) +
  geom_point(aes(colour = miss)) + # 若缺失向量是data数据的子集,则可以映射
  scale_colour_grey(na.value = "green", name = "这是图例名称") # 增加缺失值为绿色

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2.3 色盲友好色

library(ggplot2)

# 离散变量
txsamp <- subset(txhousing, city %in% c("Houston", "Fort Worth", "San Antonio", 
    "Dallas", "Austin"))
d <- ggplot(data = txsamp, aes(x = sales, y = median)) + geom_point(aes(colour = city))
d

d + scale_colour_viridis_d()  # 默认viridis色板
d + scale_colour_viridis_d(option = "plasma", name = "这是图例名称")  # 更改色板为plasma
d + scale_colour_viridis_d(option = "B", name = "这是图例名称")  # 更改色板为inferno
d + scale_colour_viridis_d(option = "magma", name = "这是图例名称")
d + scale_colour_viridis_d(option = "cividis", name = "这是图例名称")

# 连续变量
v <- ggplot(faithfuld) + geom_tile(aes(waiting, eruptions, fill = density))
v + scale_fill_viridis_c()
v + scale_fill_viridis_c(option = "plasma", name = "这是图例名称")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!