ggplot2中修改颜色|调色板

文摘   2024-11-21 23:59   江苏  
今天我们来聊聊在R语言中如何使用ggplot2包来调整颜色,让你的数据可视化作品更加吸引人。ggplot2是一个专注于数据可视化的R包,它不仅能极大地提升你的图形质量和美观度,还能让你在创建图形时更加高效。

1. 理解fill和color的区别

在ggplot2中,我们可以通过fillcolor参数来自定义图形的颜色。理解这两者的区别是非常重要的(颜色是变量的映射):

  • fill
    属性改变形状内部的颜色,比如条形图的填充色或者圆的内部颜色。
  • color
    属性修改形状的边框颜色

值得注意的是,在R中,colorcolour具有相同的效果。

示例代码:

library(ggplot2)ggplot(mtcars,aes(x=drat))+ geom_density(color="purple",fill="#69b3a2",size=2)



2. 选择颜色的五种方法

在R中,有五种主要的方法来指定颜色:

  1. 颜色名称
    :使用内置的颜色名称,如"red"、"blue"等。
  2. 十六进制代码
    :直接输入颜色代码,如"#FF5733"。
  3. RGB/RGBA
    :使用红、绿、蓝值来指定颜色。
  4. HSL/HSLA
    :使用色调、饱和度和亮度来定义颜色。
  5. 颜色调色板
    :使用预定义的颜色调色板,以确保多个图形之间的一致性。

2.1 自动分配颜色给变量

ggplot2允许你自动地将颜色分配给变量。你只需要aes()函数中指定变量,ggplot2就会自动为你生成图例

示例代码:


library(ggplot2)ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,color=Species))+ geom_point(size=6)



3. 改变颜色比例尺

ggplot2提供了默认的颜色比例尺,但有时我们需要更多的控制。以下是几种改变颜色比例尺的方法:

  1. ggplot2内置
    :使用scale_color_manual()进行自定义颜色映射。
  2. R Color Brewer
    :使用scale_color_brewer()获得美观的颜色调色板。
  3. Viridis
    :适合色盲友好和出版质量的图形。
  4. Paletteer
    :提供超过2500+种现成的颜色调色板。

示例代码:

p<-ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,color=Species))+ geom_point(size=6) + scale_color_brewer(palette="PuOr")




4. Paletteer:R颜色调色板的终极目录

Paletteer是一个R包,提供了超过2500+种现成的颜色调色板,用于你的图表。使用paletteer非常简单,它包含了几个函数,如scale_fill_paletteer_d,允许你在图形中使用任何2500+种调色板。


scale_fill_gradientn(colors = colorRampPalette(c("blue","white","green"))(12))#colorRampPalette(c("royalblue","firebrick3"))(2)

monocle2 更改点的颜色

monocle2 更改点的颜色
mypal <- ggsci::pal_aaas(palette = c("default"), alpha = 0.7)(10) ;mypal scales::show_col(mypal,ncol = 5)
选择想要的颜色搭配RColorBrewer::display.brewer.all()RColorBrewer::brewer.pal(8, 'BrBG')
cols_1<-RColorBrewer::brewer.pal(8, 'Dark2') ;cols_1 plot_cell_trajectory(cds, color_by = 'celltype')+ facet_wrap(~ celltype) pdf("2.split.pseudutime.stim.pdf") plot_cell_trajectory(cds, color_by = "celltype") + facet_wrap(~ celltype) + scale_colour_manual( values =c("#EE0000B2", "#008B45B2", "#008280B2","purple") #cols_1 # aesthetics = c("colour", "fill") ) dev.off()


分类变量和连续变量的颜色设置


ggplot(vis.data, aes(x=col, y=row, color = Bnip3l)) + geom_point() + theme_void()+ # scale_discrete_manual() scale_fill_gradient( low = "blue", high = "red", space = "Lab", na.value = "grey50", guide = "colourbar", aesthetics = "color" #fill )ggplot(vis.data, aes(x=col, y=row, color = Bnip3l)) + geom_point() + theme_void()+ # scale_discrete_manual() # scale_color_manual( colorRampPalette(c("blue","white","green"))(12) #针对分类变量 scale_color_continuous( low = "blue", high = "green" )

总结 

在使用ggplot2进行数据可视化时,颜色的选择和调整是至关重要的。颜色不仅影响图形的美观度,还能增强信息的传达效果。通过理解fillcolor的区别,我们可以更精确地控制图形的每个部分。自动分配颜色给变量的功能,使得我们能够快速地为不同的数据类别着色,并自动生成图例,这大大提升了工作效率。此外,通过使用ggplot2内置的颜色比例尺调整方法,或者利用R Color Brewer、Viridis和Paletteer等工具,我们可以轻松地为图形选择和应用专业的颜色调色板。

颜色的选择应该基于数据的类型和我们想要传达的信息。一个好的颜色方案可以使得图形更加直观易懂,而一个糟糕的颜色方案则可能导致信息的误解。因此,在选择颜色时,我们不仅要考虑到美观,还要考虑到颜色对于数据表达的影响

https://github.com/EmilHvitfeldt/r-color-paletteshttps://r-graph-gallery.com/ggplot2-color.html

生信小博士
【生物信息学】R语言开始,学习生信。Seurat,单细胞测序,空间转录组。 Python,scanpy,cell2location。资料分享
 最新文章