ggplot2畫圖的顏色自定義技巧

今天以geom_point()函數(shù)為例來探索一下顏色的自定義設置。在ggplot2畫圖思維中最重要的一點是圖層概念(即幾何對象)。后面添加的圖層就在上面,那么諸如大小和顏色之類的就會有重疊或者是覆蓋前面的可能。

1.映射顏色設置(放在ggplot()中還是在geom_point()中不受影響)

所謂映射顏色就是按照數(shù)據框中某一列(通常來說該列的數(shù)據類型是個factor)由函數(shù)默認來分配顏色,該列有幾種非重復值就分配對應的幾種顏色,下面例子中color = Species,該列中有setosa, versicolor, virginica三種類型的值。通常class()函數(shù)來查看該列的數(shù)據類型,不建議用mode()函數(shù)。查看對應值類型用table()函數(shù)。
下面的兩個代碼出來的是一樣的圖。

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"。否則會出現(xiàn)顏色名為Species(事實上是紅色)的單一色,圖例的名稱也變了(colour)。不加引號代表的是數(shù)據框的Species這一列,加了引號就變成了具體某一顏色("Species"是個字符型數(shù)據)


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()函數(shù)的外面),注意這個時候的red 一定要加上引號,后面的geom_point()有默認黑色,故而紅色被后面的圖層覆蓋了。

image.png

放在后面的geom_point()中的結果,color = "red"設置的紅色效果就呈現(xiàn)出來了,注意這兩張圖出來的都沒有l(wèi)egend。(這個以后慢慢探討)


image.png

3.自定義顏色設置

大部分情況下我們的需求是要修改每一個對應的顏色(不想默認分配的顏色),不是修改成單一的顏色(這樣修改完全沒意義也沒必要),這個時候scale_color_manual()函數(shù)就派上大用場了,它屬于scale_manual()系列里的,這個系列的函數(shù)在手動設置功能強大,可以慢慢探索,滿足各種實戰(zhàn)需求。

#手動設置自己想要的顏色
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,當然你可以改一下數(shù)據框中該列的列名,但一般不推薦)。scale_color_manual()中有個參數(shù) name,設置一下就可以修改成你想要的名稱,是不是很酷哦!


image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容