ggplot2画图的颜色自定义技巧

今天以geom_point()函数为例来探索一下颜色的自定义设置。在ggplot2画图思维中最重要的一点是图层概念(即几何对象)。后面添加的图层就在上面,那么诸如大小和颜色之类的就会有重叠或者是覆盖前面的可能。

1.映射颜色设置(放在ggplot()中还是在geom_point()中不受影响)

所谓映射颜色就是按照数据框中某一列(通常来说该列的数据类型是个factor)由函数默认来分配颜色,该列有几种非重复值就分配对应的几种颜色,下面例子中color = Species,该列中有setosa, versicolor, virginica三种类型的值。通常class()函数来查看该列的数据类型,不建议用mode()函数。查看对应值类型用table()函数。
下面的两个代码出来的是一样的图。

library(ggplot2)
test = iris
#放在ggplot()
ggplot(data = test,mapping = aes(x = Sepal.Length,
                                 y = Petal.Length,
                                 color = Species))+
  geom_point()
#放在geom_point()
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                         y = Petal.Length,
                         color = Species))
class(test$Species)  # “factor"
mode(test$Species)   # "numeric"
table(test$Species)  # setosa versicolor  virginica
image.png

注意映射颜色的代码中color = Species不能写成 color = "Species"。否则会出现颜色名为Species(事实上是红色)的单一色,图例的名称也变了(colour)。不加引号代表的是数据框的Species这一列,加了引号就变成了具体某一颜色("Species"是个字符型数据)


image.png

2.单一颜色设置(ggplot()中还是在geom_point()中不一样)

#设置无效
ggplot(data = test,mapping = aes(x = Sepal.Length,
                                 y = Petal.Length),
                                 color = "red")+
  geom_point()

#设置有效
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,),
                       color = "red")

放在前面ggplot()中的结果,尽管 color = "red"设置了红色,不属于映射颜色(放在了aes()函数的外面),注意这个时候的red 一定要加上引号,后面的geom_point()有默认黑色,故而红色被后面的图层覆盖了。

image.png

放在后面的geom_point()中的结果,color = "red"设置的红色效果就呈现出来了,注意这两张图出来的都没有legend。(这个以后慢慢探讨)


image.png

3.自定义颜色设置

大部分情况下我们的需求是要修改每一个对应的颜色(不想默认分配的颜色),不是修改成单一的颜色(这样修改完全没意义也没必要),这个时候scale_color_manual()函数就派上大用场了,它属于scale_manual()系列里的,这个系列的函数在手动设置功能强大,可以慢慢探索,满足各种实战需求。

#手动设置自己想要的颜色
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"),)
                    
#还可以设置修改图例的名称
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"),
                     name = "Spe")
image.png

这里再补充一个小技巧,有些时候图例的名称也需要修改一下,一般默认名称是映射颜色的那一列的列名(比如前面图中的Species,当然你可以改一下数据框中该列的列名,但一般不推荐)。scale_color_manual()中有个参数 name,设置一下就可以修改成你想要的名称,是不是很酷哦!


image.png

你可能感兴趣的:(ggplot2画图的颜色自定义技巧)