这配色方案让人费解啊

2024-07-05 14:51:05 浏览数 (2)

学员在微信交流群分享了一个2024年5月的单细胞数据挖掘文章,标题是:《Single-cell combined with transcriptome sequencing to explore the molecular mechanism of cell communication in idiopathic pulmonary fibrosis》,研究者们重新分析了 GSE122960 这个单细胞转录组数据集.

第一层次降维聚类分群后简单的统计了一下每个单细胞亚群的数量,绘制条形图如下所示:

就很迷惑,8个单细胞亚群为什么就使用了4个颜色呢?

R语言配色大全

我比较喜欢下面的4个r包,简单快捷:

  1. RColorBrewer
    • 由Cynthia A. Brewer开发的RColorBrewer包提供了一套精心挑选的颜色方案,特别适合制作地图和数据可视化。
    • 它允许用户根据色盲友好性、颜色数量和颜色类型(如序列、发散和定性)选择颜色方案。
  2. ggsci
    • ggsci(ggplot2 scientific)包允许用户在ggplot2的绘图中使用科学期刊的颜色方案,如《Nature》、《Science》等。
    • 它提供了一个简单的接口来访问这些颜色方案,使得科研论文和报告的图表颜色更加专业和一致。
  3. randomcoloR
    • randomcoloR包提供了一个函数,用于生成随机颜色方案,这对于需要快速创建颜色方案的用户来说非常有用。
    • 它可以生成单色或多色方案,支持用户自定义颜色的数量和亮度。
  4. paletteer
    • paletteer是一个统一的接口,用于访问多个颜色方案包,包括RColorBrewer、ggsci等。
    • https://emilhvitfeldt.github.io/paletteer/
    • 它提供了一个简单的方式来搜索和选择颜色方案,支持多种参数来定制颜色方案,如颜色的明暗、饱和度等。使用这些R包,你可以轻松地为你的数据可视化添加专业和吸引人的颜色方案。例如,使用RColorBrewer包时,你可以这样选择颜色方案:
代码语言:javascript复制
library(RColorBrewer)
myPalette <- brewer.pal(name = "BuPu", n = 7) # 选择名为"BuPu"的颜色方案,获取7种颜色

使用ggsci包时,可以这样使用期刊的颜色方案:

代码语言:javascript复制
library(ggsci)
ggplot(data, aes(x = x, y = y, color = group))  
  geom_point()  
  scale_color_nejm() # 使用《新英格兰医学杂志》的颜色方案

randomcoloR和paletteer的使用方式类似,都提供了直观的函数来生成和应用颜色方案。randomcoloR 包可以生成随机的颜色方案,非常适合当你需要快速创建一个颜色方案时使用。

代码语言:javascript复制
# 安装randomcoloR包
install.packages("randomcoloR")
# 加载randomcoloR包
library(randomcoloR) 
# 生成一组随机颜色
random_colors <- randomColor(5) # 生成5种随机颜色
# 打印这些颜色
print(random_colors)

randomColor 函数还可以接受参数来控制颜色的亮度和饱和度:

代码语言:javascript复制
random_colors_light <- randomColor(5, luminosity = "light") # 生成亮度较高的颜色
random_colors_dark <- randomColor(5, luminosity = "dark")   # 生成亮度较低的颜色

paletteer 包提供了一个统一的接口来访问多个颜色方案,包括 RColorBrewerggsci 等。详见:https://pmassicotte.github.io/paletteer_gallery/ 当然可以。以下是使用R语言和ggplot2包绘制一个简单的条形图的示例代码,并测试上面提到的四个R包(RColorBrewerggscirandomcoloRpaletteer)的配色功能。

模拟数据进行条形图可视化并且配色

首先,我们需要安装和加载必要的包:

代码语言:javascript复制
install.packages(c("ggplot2", "RColorBrewer", "ggsci", "randomcoloR", "paletteer"))
library(ggplot2)
library(RColorBrewer)
library(ggsci)
library(randomcoloR)
library(paletteer)

然后,我们模拟一些数据来绘制条形图:

代码语言:javascript复制
# 模拟数据
df <- data.frame(
  Category = rep(c("A", "B", "C", "D"), each = 2),
  Value = c(23, 45, 32, 50, 18, 27, 42, 55)
)

接下来,我们将使用不同的颜色方案来绘制条形图。

使用 RColorBrewer 的颜色方案:

代码语言:javascript复制
# 选择颜色方案
brewer_colors <- brewer.pal(name = "Set1", n = 4)
# 绘制条形图
ggplot(df, aes(x = Category, y = Value, fill = Category))  
  geom_bar(stat = "identity", color = "white")  
  scale_fill_manual(values = brewer_colors)  
  theme_minimal()  
  labs(title = "Simple Bar Plot with RColorBrewer Colors",
       x = "Category",
       y = "Value")

使用 ggsci 的颜色方案:

代码语言:javascript复制
# 选择颜色方案 
ggsci_colors <- ggsci::pal_npg("nrc")(4)
# 绘制条形图
ggplot(df, aes(x = Category, y = Value, fill = Category))  
  geom_bar(stat = "identity", color = "white")  
  scale_fill_manual(values = ggsci_colors)  
  theme_minimal()  
  labs(title = "Simple Bar Plot with ggsci Colors")

使用 randomcoloR 的颜色方案:

代码语言:javascript复制
# 生成随机颜色方案
random_colors <- randomColor(4)
# 绘制条形图
ggplot(df, aes(x = Category, y = Value, fill = Category))  
  geom_bar(stat = "identity", color = "white")  
  scale_fill_manual(values = random_colors)  
  theme_minimal()  
  labs(title = "Simple Bar Plot with Random Colors")

使用 paletteer 的颜色方案:

代码语言:javascript复制
# 选择颜色方案
paletteer_colors <- paletteer::paletteer_d("rcartocolor::Geyser")
# 绘制条形图
ggplot(df, aes(x = Category, y = Value, fill = Category))  
  geom_bar(stat = "identity", color = "white")  
  scale_fill_manual(values = paletteer_colors)  
  theme_minimal()  
  labs(title = "Simple Bar Plot with paletteer Colors")

运行上述代码后,你将得到四个不同的条形图,每个都使用了不同的颜色方案。这些示例展示了如何轻松地在ggplot2中应用不同的颜色方案来增强数据可视化的视觉效果。

0 人点赞