在做一些可視化手動添加配色的時候,遇到以下問題:
- 經(jīng)常會因為細(xì)胞類型數(shù)目太多而不知道該怎么選擇配色
- 選好了配色之后一個個手敲或者復(fù)制挺麻煩的
下面介紹一個配色包:paletteer(全部代碼放在最后面)
1.安裝
install.packages("paletteer")
- 具體使用
library(paletteer)
# 離散型調(diào)色板
d_palettes<- palettes_d_names
d_palettes
# 轉(zhuǎn)換為數(shù)據(jù)框的格式
colcors_merge <- data.frame(d_palettes)

離散型 調(diào)色盤
3.選取配色
color_dat <- data.frame(color=paste0(colcors_merge$package,"::",colcors_merge$palette),length=colcors_merge$length)
View(color_dat )
結(jié)果如圖所示:

color_dat展示
4.這時候只需要根據(jù)自己數(shù)據(jù)所需要的顏色數(shù)量,挑選相對應(yīng)color列的內(nèi)容,復(fù)制到如下代碼中即可:
mycols <- paletteer_d("palettesForR::Browns")
mycols #查看具體配色

配色可直接在控制臺顯示出來
5.示例
mycols_2 <- paletteer_d("pals::kelly")
mycols_3 <- paletteer_d("khroma::iridescent", n = 22)
mycols_4 <- paletteer_d("palettesForR::Windows", n = 22)

徹底解決了顏色多需要手打的問題
6.放到畫圖函數(shù)中,修改參數(shù)即可:
scale_fill_manual(values=mycols)
7.全部代碼匯總:
install.packages("paletteer")
library(paletteer)
# 離散型調(diào)色板
d_palettes<- palettes_d_names
d_palettes
colcors_merge <- data.frame(d_palettes)
color_dat <- data.frame(color=paste0(colcors_merge$package,"::",colcors_merge$palette),length=colcors_merge$length)
# 根據(jù)需求調(diào)顏色
paletteer_d("Polychrome::kelly", n = 22)
paletteer_d("pals::kelly")
paletteer_d("palettesForR::Browns")
mycols <- paletteer_d("palettesForR::Browns")
mycols_2 <- paletteer_d("pals::kelly")
mycols_3 <- paletteer_d("khroma::iridescent", n = 22)
mycols_4 <- paletteer_d("palettesForR::Windows", n = 22)
# 最后畫圖
# 堆疊柱狀圖
library(ggpubr)
ggbarplot(sample, x = "sample", y="proportion", color="black", fill="cellType",
legend="right",
legend.title="Cell Type",
# main="Relative counts per Phylum",
font.main = c(14,"bold", "black"), font.x = c(12, "bold"),
font.y=c(12,"bold")) +
theme_bw() +
rotate_x_text() +
scale_fill_manual(values=mycols_4) + # 顏色設(shè)置
# facet_grid(~ group, scales = "free_x", space='free') +
labs(x = "Sample", y = "Relative proportion") +
theme(axis.text.x=element_text(),
axis.ticks.x=element_blank(),
axis.title = element_text(face = "bold"),
plot.title = element_text(face = "bold"),
legend.title = element_text(face = "bold"))