ggplot2绘图颜色

7 篇文章 2 订阅

摘要

推荐使用colorspace包,或者ggsci包中的色板进行配色。

  • scale_(fill/color)(continous/discrete/binned)(sequential/diverging/qualitative/divergingx)

前言

ggplot图形绘制中经常用到颜色映射aes,常见的有aes(color=var)或者aes(fill=var)进行边框或者填充色的绘制。比如:

library(tidyverse)

iris %>% ggplot()+
  geom_point(aes(Sepal.Length,Sepal.Width,color=Species),size=3)

上图用到了color边框线的映射,有时候也会用到fill填充色映射,比如:

p=iris %>% ggplot(aes(x=Species,y=Sepal.Length))+
  geom_boxplot(aes(fill=Species))
p

但是此处的颜色类型均为系统默认,没有自定义形式,而ggplot图形系统中,则可以利用scale_fill_xxx形式对颜色梯度进行自定义。下文中colorfill实际是一致的。

离散变量

默认定义scale_fill_discrete()

如果希望改变次序,则要调用scale_x_discrete中的limits参数。

# 柱子数量不变,排序不变,legend不变
p+scale_x_discrete(breaks=c("virginica","setosa"))

# 柱子数量改变,排序改变,legend改变
p+scale_x_discrete(limits=c("virginica","setosa"))
## Warning: Removed 50 rows containing missing values (stat_boxplot).

#图形不变,legend处排序变化,颜色不变
p+scale_fill_discrete(breaks=c("virginica","setosa"))

#图形不变,legend处排序变化,颜色发生变化
p+scale_fill_discrete(limits=c("virginica","setosa"))

色环系统 scale_fill_hue()

默认情况下,离散比例的颜色围绕HSL色环均匀分布。例如,如果有两种颜色,那么它们将从圆圈上的相对点中选择;如果有三种颜色,它们在色环上将相隔 120° 等等。

默认颜色选择使用 scale_fill_hue() 和 scale_colour_hue(),hue颜色系统有修改:

  • h 色相,实际是色环角度0-360
  • c 饱和度,0-100
  • l 亮度,0-100
    例如:
p+scale_fill_hue(h=c(120,360))

p+scale_fill_hue(l=80)#设置亮度(l默认45)

p+scale_fill_hue(l=30)#设置亮度(l默认45)

p+scale_fill_hue(c=50)#设置饱和度(c默认100)

p+scale_fill_hue(c=100)#设置饱和度(c默认100)

灰度系统scale_fill_grey()

p+scale_fill_grey(start=0.2,end=0.8)

调色板scale_fill_brewer()

RColorBrewer包中有多个色板可供选择:

RColorBrewer::display.brewer.all()

RColorBrewer中有3套色板,type参数,分别为:

  • Sequential(seq): 用于表示数值梯度,用于呈现有序的数值信息,数值越高颜色越深,越低颜色越浅。
  • qualitative(qual):用于呈现分类信息,颜色之间一般对比鲜明。
  • diverging(div): 分歧,用于呈现有序/连续的数值信息,这些数值围绕着一个中心值,比中心值越大的方向用一种渐变色,比中心值越小用另一种渐变色。

对于离散变量映射,则有:

p+scale_fill_brewer(type="seq",palette = 2)

p+scale_fill_brewer(type="qual",palette = 2)

p+scale_fill_brewer(type="div",palette = 2)

或者直接指定色板名称palette=??

p+scale_fill_brewer(palette="Spectral")

上述颜色也可以在colorspace包中获取。

library(colorspace)
## Warning: package 'colorspace' was built under R version 4.1.1
hcl_palettes(plot = TRUE)

hcl_palettes("qualitative", plot = TRUE)

hcl_palettes("sequential (single-hue)", n = 7, plot = TRUE)

hcl_palettes("sequential (multi-hue)", n = 7, plot = TRUE)

hcl_palettes("diverging", n = 7, plot = TRUE)

divergingx_palettes(plot = TRUE)

如果需要具体颜色值,则通过:

#colorspace::diverging_hcl(n = 7, "Dark 2")
#colorspace::qualitative_hcl(4, palette = "myset")
colorspace::sequential_hcl(n = 7, palette = "Peach")
## [1] "#EA4C3B" "#EF6D48" "#F3885B" "#F6A173" "#F8B78E" "#F9CCA9" "#FADDC3"

ggplot2图形系统,则可以直接调用colorspace中的色板:

  • scale_color_discrete_qualitative()
  • scale_fill_continuous_sequential()
  • scale_colour_continous_divergingx()
    例如:
p+scale_fill_discrete_qualitative(palette="Set2",nmax=6,rev=T,order=4:6)

连续变量

p1=iris %>% ggplot(aes(x=Sepal.Length,y=Sepal.Width))+
  geom_point(aes(color=Sepal.Length),size=3)
p1

默认scale_fill_continous

p1+scale_color_continuous(type="gradient")

p1+scale_color_continuous(type="viridis")

p1+scale_color_continuous(breaks=c(2.5,5.2,6.8),limits=c(1,7))

上图中limits规定了映射范围,breaks参数规定了断点值。

梯度scale_fill_gradient

  • scale_fill_gradient
  • scale_fill_gradient2
  • scale_fill_gradientn
p1+scale_color_gradient(low="red",high="blue")

p1+scale_color_gradient2(low="red",mid="white",high="blue",midpoint = 6)

p1+scale_color_gradientn(colors=c("yellow","green","red","black"))

色板scale_fill_distiller/fermenter

  • scale_fill_distiller() 色块连续过度
  • scale_fill_steps/scale_fill_binned()/scale_fill_fermenter() 色块离散过度

其中distiller把brewer离散色板中均匀插值7个色块形成过渡色,而fermenter则是把brewer色板的颜色离散化。

p1+scale_color_distiller(palette = "Spectral")

p1+scale_color_fermenter(palette = "Spectral")

p1+scale_color_steps(low="red",high="blue")

p1+scale_color_binned()

steps还有:

p1+scale_fill_steps(low = "#002B43", high = "#99B1F7")

p1+scale_fill_steps2(low = "red", mid = "white",high = "blue")

p1+scale_fill_stepsn(colors=c(ggsci::pal_aaas()(5)))

对应colorspace包,则有scale_fill_continous_???:

  • scale_colour_continuous_sequential
  • scale_colour_continuous_qualitative
  • scale_colour_continuous_diverging
  • scale_colour_continuous_divergingx
p1+scale_color_continuous_diverging(palette = "Cork")

p1+scale_color_continuous_divergingx(palette = "Geyser")

p1+scale_color_continuous_qualitative(palette = "Warm")

p1+scale_color_continuous_sequential(palette = "Heat")

p1+scale_color_binned_qualitative(palette = "Warm")

其它

色盲色板

p1+scale_color_viridis_c()

p+scale_fill_viridis_d()

p1+scale_color_viridis_b()

完全自定义

自定义主要对应离散映射:

aa=unique(iris$Species)
p+scale_fill_manual(breaks = c(aa[2],aa[1],aa[3]), 
     values = c("darkorange", "purple", "cyan4"))

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ggplot2是一个常用的R语言绘图包,通过它可以快速、美观地绘制统计图形。其基本操作包括建立绘图对象、定义数据源、设置图形属性等步骤。下面我们举例说明如何使用ggplot2绘图代码: 首先,要加载ggplot2包: ```R library(ggplot2) ``` 然后,导入数据源: ```R data(iris) ``` 假设我们现在需要绘制iris数据集中四个变量(Sepal.Length,Sepal.Width,Petal.Length和Petal.Width),采用不同颜色区分种类(Species)的散点图。我们可以按如下方法设置绘图对象: ```R p <- ggplot(data=iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) ``` 这里,我们使用ggplot函数创建绘图对象,并使用aes函数指定我们需要绘制的四个变量。其中,x和y分别对应x轴和y轴,color则指定了散点的颜色颜色的种类由数据集中的Species变量决定。 接下来,我们可以添加散点图层(geom_point),定义点的大小和形状等属性: ```R p + geom_point(size=3, shape=21) ``` 这里,我们设置散点的大小为3,形状为21,即实心圆点。 最后,我们可以调整图形的坐标轴、子标题等其他属性: ```R p + geom_point(size=3, shape=21) + labs(title="Iris dataset", x="Sepal length", y="Sepal width", color="Species") + theme(plot.title = element_text(hjust = 0.5)) ``` 这里,我们添加了标题(title)、x轴标签(x)、y轴标签(y)和颜色注释(color),并通过theme函数调整了标题的位置(hjust=0.5表示水平居中)。最终得到了一张优美、规范的散点图。 ggplot2提供了丰富的绘图功能和灵活的语法,使得我们可以轻松实现多种类型的图形。学好ggplot2绘图代码,能够极大地提高我们的数据可视化效率和数据分析能力。 ### 回答2: ggplot2是R语言中用于数据可视化的一个包。它是基于数据层的、图层叠加的思想,使用简单直观的语法创建复杂的图形。下面介绍一段ggplot2绘图代码实现。 首先,需要加载ggplot2包,命令为library(ggplot2)。然后,我们需要准备数据,这里以某一品牌销售数据为例,代码为: ```r data <- data.frame( date = as.Date(c("2021-01-01", "2021-02-01", "2021-03-01", "2021-04-01", "2021-05-01")), sales = c(155, 100, 310, 258, 190), region = c("North", "South", "North", "South", "North") ) ``` 上述代码定义了一个数据框,其中有销售日期、销售额、销售区域三列数据。然后,我们使用ggplot函数定义图形对象,指定数据源data和美学映射aes: ```r ggplot(data, aes(x = date, y = sales, group = region, color = region)) + geom_line() + scale_x_date(date_labels = "%b-%y") + labs(title = "Monthly sales for a brand", x = "Date", y = "Sales", color = "Region") ``` 上述代码中,我们绘制了一个折线图。geom_line函数指定了绘制线条,scale_x_date函数调整X轴为日期格式,并设置了日期格式。labs函数定义了图形的标题和坐标轴标签。 通过上述代码,我们可以使用ggplot2包创建复杂的图形,并实现数据的可视化。 ### 回答3: ggplot2是一款数据可视化工具,它可以通过一些代码来制作出优美的图形。首先需要安装ggplot2包,并调用该包。以绘制散点图为例,需要用到以下代码: ggplot(data = dataframe, mapping = aes(x = x_var, y = y_var)) +geom_point() 其中,dataframe是存储数据的框架,x_var和y_var是数据框架中对应的自变量和因变量。geom_point()指定了要绘制散点图。 如果想要添加更多图层,可以通过以下方法继续绘制其他元素: ggplot(data = dataframe, mapping = aes(x = x_var, y = y_var)) +geom_point() +geom_line() +theme_bw() 这里,加入了一条线(geom_line())和一个白色背景(theme_bw())。其他图层元素还包括:柱状图(geom_bar())、密度曲线(geom_density())等。除此之外,还可以添加标题、标签、颜色、调节坐标轴等等。 总之,ggplot2不仅使数据更加易于理解,还使绘图变得更加容易,同时也为数据分析带来了更大的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值