R語言顏色綜合運用與色彩方案共享

2021-03-02 數據小魔方

今天這篇主要講解R語言顏色綜合運用,主要跟大家介紹如何提取那些專業色彩包中的顏色搭配用於在基礎繪圖系統和高級繪圖系統中共享。

其實無論是R語言的預設配色系統、自定義顏色表還是哪些專屬配色包,我們所使用(或者R語言識別的)的僅僅就是一組字符向量所代表的色值而已,並不神秘。

通過scales中的色彩獲取函數,我們可以將專屬配色主題(RColorBrewer、ggthemes)中的配色主題提取出來,以函數的形式傳遞給基礎繪圖系統(plot)以及ggplot繪圖系統。

本文按照三部分進行講解:

RColorBrewer部分:

ggthemes部分:

scales::brewer.pal運用:

RColorBrewer部分

關於RColorBrewer包之前在寫ggplot函數系統的時候已經有所涉獵,其中專門講解過它的官方配色網站:http://colorbrewer2.org/#

這是一個非常神奇的網站,RColorBrewer包中的配色方案全部來源於此,而且網站上允許自定義色彩序列和類型,衍生出來的顏色要比該包中的配色資源多出很多倍。

library(RColorBrewer)

display.brewer.pal(n, name)

display.brewer.all(type="all")

ColorBrewer設計團隊將配色方案分為三種:

seq:連續漸變色

div:雙向漸變色

qual:分類色

通過display函數可以查看不同類型的色板:

顏色查看:

display.brewer.all(type = "all")  #查看所有色板

display.brewer.all(type = "seq")  #查看單色漸變色板

display.brewer.all(type = "div")  #查看雙色漸變色板

display.brewer.all(type = "qual") #查看離散(分類)色板

以上通過display四個函數成功顯示了全部色板、單色漸變色板、雙色漸變色板、離散(分類)色板

當然你也可以通過display.brewer.pal(n, name)函數顯示指定名稱的顏色主題:

display.brewer.pal(9, "BuGn")


par(mfrow=c(1,5),mar=c(1,1,2,1),xaxs="i", yaxs="i")

mycolors<-brewer.pal(9, "BuGn")

barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of BuGn ")

mycolors<-brewer.pal(9, "OrRd")

barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of OrRd")

mycolors<-brewer.pal(9, "YlGn")

barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of YlGn")

mycolors<-brewer.pal(9, "Oranges")

barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of Oranges")

mycolors<-brewer.pal(9, "Blues")

barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of Blues")

dev.off()


大家已經看到了,通過brewer.pal(n, "name")函數,可以很輕鬆的提取出你想要的配色主題。

如果你想要某個配色主題的其中幾個色值,可使用如下方式提取:

display.brewer.pal(6, "BuGn")#按順序提取前六個


如果想要提取某一組色彩主題不連續的顏色,可以使用文本函數:

library(scales)

a<-brewer.pal(9, "BuGn")

show_col(a[c(1,3,5,7,9)],labels=F)

通過向量合併,你還可以自己從色彩包中自定義色彩方案。

b1<-brewer.pal(9, "BuGn");b2<-brewer.pal(9,"Blues")

c<-c(b1[c(1,3,5,7,9)],b2[c(2,4,6,8)])

show_col(c,labels=F)


其實都是些很簡單的文本函數組合,畢竟色彩方案在軟體中也就是一組字符向量而已。

以上這些色彩方案可以很容易的應用到基礎繪圖系統和ggplot繪圖系統中。

c<-c(50,30,50,70,90,40)

names(c)<-LETTERS[1:6]

mycolor<-brewer.pal(9,"Greens")

pie(sort(c,decreasing=T),labels=names(c),col=mycolor[c(3,5,5,6,7,9)],clockwise=T,radius=1,border=F)


library(ggplot2)

library(plyr)

mydata<-data.frame(c)

ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+

    geom_bar(stat="identity",width=1,col="white")+

    coord_polar(theta = "y",start=0)+

    theme(panel.grid = element_blank(),

    panel.background = element_blank(),

    axis.text = element_blank(),

    axis.ticks = element_blank(),

    axis.title = element_blank())+

    scale_fill_brewer(palette="Greens",labels=c("E", "D", "A","C","F","B"))+

    guides(fill=guide_legend(reverse=TRUE,title=NULL))


ggthemes部分:

接下來講解ggthemes部分,其實ggthemes包原本是轉為ggplot2包開發的輔助包(前面加的前綴——gg就可以看出來,這種包還有很多),裡面提供了大量高質量的主題、顏色方案。其中就有我們所熟知的economist主題方案以及wsj方案,還有諸如stata、excel、tableau、solarized、tufte等主題方案。

ggthemes包中的色彩方案都是打包好,命名過的,所以我們引用的時候,只需賦值即可。

這裡以economist和WSJ為例:

library(ggthemes)

m1<-economist_pal()(6)

show_col(m1)


mycolor<-m1<-economist_pal()(5)

pie(sort(c,decreasing=T),labels=names(6),col=mycolor,border=F,clockwise=T,init.angle=90,radius=1)


ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+

    geom_bar(stat="identity",width=1,col="white")+

    coord_polar(theta = "y",start=0)+

    theme(panel.grid = element_blank(),

    panel.background = element_blank(),

    axis.text = element_blank(),

    axis.ticks = element_blank(),

    axis.title = element_blank())+

    scale_fill_economist(labels=c("E", "D", "A","C","F","B"))+

    guides(fill=guide_legend(reverse=TRUE,title=NULL))


m2<-wsj_pal()(6)

show_col(m2)


mycolor<-m1<-wsj_pal()(6)

pie(sort(c,decreasing=T),labels=names(c),col=mycolor,border=F,clockwise=T,init.angle=90,radius=1)

ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+

    geom_bar(stat="identity",width=1,col="white")+

    coord_polar(theta = "y",start=0)+

    theme(panel.grid = element_blank(),

    panel.background = element_blank(),

    axis.text = element_blank(),

    axis.ticks = element_blank(),

    axis.title = element_blank())+

    scale_fill_wsj(labels=names(c))+

    guides(fill=guide_legend(reverse=TRUE,title=NULL))


其實關於economist和wsj的配色主題遠不止這些元素,裡面規定了詳細的序列用色標準、線條用色標準、形狀標準和背景色參考方案,這些信息,你可以通過使用ggthemes_data函數進行查看:

#WSJ背景色

ggthemes_data$wsj$bg         

     gray     green      blue     brown 

"#efefef" "#e9f3ea" "#d4dee7" "#f8f2e4"

#WSJ主題色

ggthemes_data$wsj$palettes   #主題色

$rgby

   yellow       red      blue     green 

"#d3ba68" "#d5695d" "#5d8ca8" "#65a479" 

$red_green

    green       red 

"#088158" "#ba2f2a" 

$black_green

    black      gray   ltgreen     green 

  "#000000" "#595959" "#59a77f" "#008856" 

$dem_rep

     blue       red      gray 

   "#006a8e" "#b1283a" "#a8a6a7" 

$colors6

      red      blue      gold     green    orange     black 

   "#c72e29" "#016392" "#be9c2e" "#098154" "#fb832d" "#000000"

#economist背景色:

ggthemes_data$economist$bg

#economist主題色:

ggthemes_data$economist$fg

也可以使用scales包中的show_col函數進行顏色的圖形化輸出:

顯示主題顏色:

《華爾街日報》

show_col(ggthemes_data$wsj$bg)                      #背景色

show_col(ggthemes_data$wsj$palettes$rgby)           #rgby

show_col(ggthemes_data$wsj$palettes$red_green)      #red_green

show_col(ggthemes_data$wsj$palettes$black_green)    #black_green

show_col(ggthemes_data$wsj$palettes$dem_rep)        #dem_rep

show_col(ggthemes_data$wsj$palettes$colors6)        #colors6

《經濟學人》

show_col(ggthemes_data$economist$bg)                #背景色

show_col(ggthemes_data$economist$fg)                #主題色

show_col(ggthemes_data$economist$stata)             #基於stata的配色方案

以上ggthemes包中的所有顏色,你都可以通過names_pal()(n)的格式進行提取,然後使用文本函數進行抽取、轉化、合併,自由搭配出屬於自己的專屬配色方案


scales包的brewer_pal函數:

接下來的時間我會將全部精力放在brewer_pal函數上,告訴你為什麼,因為這個函數是scales專門為圖形標度所設置的顏色設置函數,而以上我們所述的RColorBrewer裡面的brewer.pal以及ggthemes包中的names_pal函數,是用於提取自己的配色方案,適用範圍較小。

library("scales")

brewer_pal(type = "seq", palette = 1, direction = 1)

該函數直接對接RColorBrewer包中的配色主題,但是增加了一些輸出參數,可以對輸出的主題進行更加靈活的自定義操作。

type設置顏色種類,palette設置色板(可以是字符名稱,也可以是編號),direction設置顏色輸出順序(默認為原始順序,-1代表倒序,對於連續漸變類型的色板比較重要)。

show_col(brewer_pal()(10))

show_col(brewer_pal("div")(5))

show_col(brewer_pal(palette = "Greens")(5))

可以看出來,brewer_pal()函數允許通過色板類型、色彩數據、主題類型進行篩選輸出。

我們可以通過brewer_pal函數將色彩信息傳遞給指定向量,或者直接將brewer_pal指定給col或者fill等圖表中的標度參數。

par(mfrow=c(1,2),mar=c(1,1,2,1),xaxs="i", yaxs="i")

pie(rep(1,times=6),labels="",col=brewer_pal(palette="Greens")(6),border=F,radius=1,clockwise=T)

pie(rep(1,times=6),labels="",col=brewer_pal(palette="Greens",direction =-1)(6),border=F,radius=1,clockwise=T)

因為ggplot中有專用於RColorBrewer的色彩主題函數scale_fill(colour)_brewer(),用於對接RColorBrewer中的色彩庫,所以我們想要在ggplot圖表系統中使用RColorBrewer中的配色主題,不必使用brewer_pal進行提取。

並且,brewer_pal函數內的參數,在scale_fill(colour)_brewer()函數內也可以使用,對色彩方案進行篩選、抽取。

library(Rmisc)

library(lattice)

p1<- ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+

    geom_bar(stat="identity",width=1,col="white")+

    coord_polar(theta = "y",start=0)+

    theme(panel.grid = element_blank(),

    panel.background = element_blank(),

    axis.text = element_blank(),

    axis.ticks = element_blank(),

    axis.title = element_blank(),

    legend.position="top")+

    scale_fill_brewer(palette="Greens",labels=names(c))+

    guides(fill=guide_legend(reverse=TRUE,title=NULL))

p2<- ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+

    geom_bar(stat="identity",width=1,col="white")+

    coord_polar(theta = "y",start=0)+

    theme(panel.grid = element_blank(),

    panel.background = element_blank(),

    axis.text = element_blank(),

    axis.ticks = element_blank(),

    axis.title = element_blank(),

    legend.position="top")+

    scale_fill_brewer(palette="Greens",direction =-1,labels=names(c))+

    guides(fill=guide_legend(reverse=TRUE,title=NULL))

multiplot(p1,p2,cols=2)


除此之外,還有一個叫ggtech的包,專門為ggplot2包提供科技公司風格配色方案。仔細看了包,沒有取色函數,但是提供了全部的色值信息。

library(ggtech)

tech_key = list(airbnb = c("#FF5A5F","#FFB400", "#007A87", "#FFAA91", "#7B0051"), 

facebook = c("#3b5998","#6d84b4", "#afbdd4", "#d8dfea"), 

google = c("#5380E4", "#E12A3C", "#FFBF03","#00B723"), 

etsy = c("#F14000", "#67B6C3", "#F0DA47", "#EBEBE6", "#D0D0CB"),

twitter = c("#55ACEE", "#292f33", "#8899a6", "#e1e8ed"))

show_col(tech_key$airbnb)

show_col(tech_key$facebook)

show_col(tech_key$google)

show_col(tech_key$etsy)

show_col(tech_key$twitter)

以上是今天所要講的主要內容,因為關於這塊兒的內容,非常豐富,我也只能涉略一點兒,想要了解更多的R語言配色知識,可以參考詳細的官方文檔。

其實這一系列內容還有一個姊妹篇(上篇《R預設配色系統及自定義色板》),推送在小魔方的個人公眾號——「數據小魔方」上,主要內容是關於R語言預設的配色系統和目前可以調用的自定義顏色的調取與組合、轉換等信息。如果你想要了解詳情的話,可以去那裡查看,閱讀原文可以直達。

點擊原文閱讀該篇內容的姊妹篇:《R預設配色系統及自定義色板》

我是分割線~

歡迎關注魔方學院QQ群:

QQ群:


微信群:



相關焦點

  • 史上最全的圖表色彩運用原理
    我們先從顏色模型開始講解學術圖表的色彩運用原理。在圖像處理中,最常用的顏色空間是RGB模型,常用於顏色顯示和圖像處理。
  • 讀完這篇文章 從此R語言作圖配色不用愁
    今天這篇主要講解R語言顏色綜合運用,主要跟大家介紹如何提取那些專業色彩包中的顏色搭配,用於在基礎繪圖系統和高級繪圖系統中共享。
  • 語言文字運用:限時綜合訓練1
    語言文字運用限時綜合訓練一(時間:20分鐘 分值:20分)閱讀下面的文字,完成1~3題。(9分)一段時間以來,詞曲都帶有濃厚中國韻味的「古風音樂」漸漸走紅。從十幾年前貼吧的古風填詞、遊戲論壇的配樂翻唱,古風音樂在產生初期就有著網絡的色彩。自發創作的歌曲層出不窮,專職、兼職的「古風圈大神」不斷湧現。而「95後」甚至「00後」的「新人」,也________地變為古風音樂的主要受眾。事實上,除了古風音樂,寬衣博帶的古風服飾,裙袂飄飄的古風舞蹈,都獲得了不少擁躉。或是對快節奏生活感到疲憊厭倦,或是被古典之美深深折服,選擇古風,也是對中華文明的歸屬與認同。
  • R預設配色系統及自定義色板
    今天是R語言配色系統綜合篇的上篇(當然是有下篇啦,下篇將會教你如何優雅的提取各種高大上配色主題,作為己用。經過幾天的研究,小魔方已經發現了如果將各種高質量配色包中的主題色板通過函數的形式在高級繪圖系統和低級繪圖系統之間相互共享)。
  • 哈工附名師解析中考試題|英語:試題貼近生活 著重考查語言綜合運用...
    英語:試題貼近生活 著重考查語言綜合運用能力 今年英語試題體現了「注重基礎、能力立意、穩中求變」的命題原則。難度比例適當,坡度適宜。科學設置了題型結構,使本次考試能夠準確地反映學生的實際水平。試題考核的知識點覆蓋面廣,考查學生用所學知識解決問題的能力。
  • Python&R語言顏色主題介紹(來看看哈利波特主題顏色)
    ,雖然之前也有介紹過一些優秀的配色網站,也有搭配好的顏色主題可以直接參考,但有沒有直接供Python或者R繪圖直接使用的關於顏色設置的第三方包呢?這邊推文將較為詳細的介紹關於Python的R的顏色主題包,主要涉及的內容如下:常見顏色主題:單色系(Sequential)、多色系(Diverging)和多色系(Qualitative)簡介單色系(Sequential)、雙色漸變系(Diverging)和多色系(Qualitative)優秀的可視化作品離不開顏色的合理設置,而有關圖表繪製顏色搭配的三大準則
  • 這樣運用色彩,讓空間的舒適感倍增
    引色是西方色彩應用技巧中一個很重要的手法,也即是從客戶心愛的藝術品和家具中引出色彩來搭建配色方案。這個案例是從客廳那張地毯中引出顏色,根據色彩比例分別運用不同的物件貫穿到各個空間中,形成一氣呵成、冷暖平衡的色彩節奏。
  • 看她穿衣服的顏色就知道,掌握色彩語言,你才是高手
    ▼色彩,是地球母親賦予我們感知大自然最美、最動人的無聲語言。我們對於這個世界、乃至這個宇宙的認知都是由各類五彩斑斕的顏色所構成的。你對色彩在不同時間內的態度就是你自己心路歷程變遷的過程。這就是色彩能量和性格的關係,也是洛薇今天想分享的重點。了解這個你才能正確地運用色彩、穿對色彩,你才能坦然地明白自己為什麼喜歡穿某一類顏色,你才能更好地駕馭色彩。
  • 認識燈光 | 探索色彩的語言
    沒有光就沒有色彩,色彩來源於光。物體反射不同顏色的光,我們看到的物體顏色也不同。太陽發射的電磁波,才是它所有的能量所在。其中大部分是人類不能直接看到的。我們感覺不到電磁波穿過身體,但是它一直都存在。所以我們可以知道色彩不是物體本身,因為是光線發射到物體上,物體吸收了某些光線,最後反射出來的光線顏色,就是我們看到的顏色(其實是光線)。但也不僅僅是光線,因為還需要人類的眼睛把它轉換成"顏色"。
  • 實用主義:色彩在攝影中的運用
    攝影的世界中充滿了無限豐富和不斷變化的色彩,攝影的藝術表現力包括很多的方面,而攝影色彩的準確表達就是非常重要的一部分。在攝影中,色彩有哪些作用呢?如何正確的把握色彩在攝影中的運用呢?       色彩的冷暖作用:色彩的冷暖感覺在攝影的色彩語言表達上往往起著非常重要的作用,冷色如藍色易聯想到海洋等產生寒冷平靜的感覺;暖色如紅色往往會聯想到太陽等能產生溫暖的感覺。所以色彩的冷暖關係的把握使攝影師在表達自己情感過程中起到至關重要的作用。
  • 每天學習一點R:12.顏色設置
    R語言中的顏色R語言繪圖中與顏色相關的參數:col
  • 兒童畫教程《美麗的城堡》,線描創作與色彩的綜合運用
    本節課用時大約90分鐘左右,用的是線描裝飾與色彩相結合的方法。既有點線面的訓練,又能用色彩的方式吸引學生們的繪畫興趣。課堂的效果非常好。本節課需要準備的工具有,鏡片紙,水彩顏色及工具,籤名筆或記號筆。3,畫面色彩與黑白對比的表現。黑白與色彩畫在一塊,最容易拉開色彩與黑白的關係,增強畫面效果。色彩的暈染是小朋友實際作畫中比較難操作的。本節課我們採用的是水彩顏色,要特別注意水分在作畫中的應用。一般我們採用主題物用黑白塑造,背景用色彩暈染的方式。
  • 高級灰、霧霾藍、土豪金……多種色彩運用於裝修,給生活一點「顏色...
    (央視財經《空間榜樣》)中國人裝修在色彩的運用上多數會選擇比較保守的白色、咖色或者一些中性色,對於明豔的色彩既愛又怕。其實色彩用好了,不但能讓家充滿活力,還可以傳遞出一種別樣的氣質。看看下面幾種色彩的搭配,馬上讓你的家與眾不同!
  • 這是最簡單粗暴的色彩解決方案
    第021期 | 最簡單粗暴的配色方案色彩有一篇關於不同色彩的情感的文章,但是這並不能很好的解決色彩搭配的問題,色彩有很大的學問在裡面
  • 好看的色彩搭配方案—紫色篇
    譬如今天要分享的紫色,是一種非常神秘的顏色,掌握它的色彩理論知識,創作時若能恰如其分的使用和搭配,能幫助你提升作品的逼格。紫色又是神秘、高貴、浪漫的結合,因它的種種特性讓它成為很多大牌設計師非常鍾愛的色彩之一,根據彩度明度劃分紫色能分為很多種,因此能組合的色彩搭配方案也是非常多樣化的,這裡分享幾組好看的配色給大家。
  • 攝影中關於色彩(調)的運用
    色彩是最具有感染力的視覺語言,每一種色彩的選用和調製都是一種情緒和心情的表達。一張好的攝影作品, 不僅僅是利用光影以及明暗度對比來進行氛圍的烘託,攝影師還需要懂得色彩搭配,只有這樣才能讓畫面看起來更具有統一性。
  • 動畫電影中色彩語言的魅力你知道多少?
    動畫組織情節敘事也要通過色彩的運用來達到,在處理鏡頭承接轉換的時候,可以產生呼應、連貫、對比、比喻、懸念、聯想、暗示、擬人等作用,使作品達到主題明確、形象生動、結構嚴謹、節奏鮮明、脈絡清晰、效果明顯的要求,從而揭示作品內涵和現實追求,進一步增加色彩敘事的感染力和凝聚力。
  • 色彩運用對一張照片居然如此重要!
    然而,這些都離不開攝影構圖技巧,特別是色彩元素構圖技巧運用。 例如,運用色彩構圖的拍攝時間可以定在早晨和晚上。如果要非常準確的話,那就是黎明和黃昏。在清晨時分,有很短暫的一段時間,光線的顏色會呈現清冷柔和的藍色。
  • 讓頂尖設計師告訴你10個PPT色彩運用秘技
    精選君說:今天分享一篇PPT色彩靈感文章,希望大家做PPT的時候能得到啟發。 「色彩,這是一種多麼深刻而神秘的語言啊!」的確,不同的色調能夠調動不同的情緒和反映,能夠影響用戶對於品牌的感知。簡單說來,色彩可以造就不同的設計。與此同時,研究表明,色彩能夠強化品牌認知度(高達80%),加深用戶印象,讓品牌的設計和文本在同類中脫穎而出。
  • 模型塗裝中的色彩反差運用(上)
    下面是一篇國外大牛寫的關於模型塗裝過程中色彩反差(contrast)運用的文章。不敢獨享,翻譯來給大家學習。色彩色彩反差和色彩理論基本上來說是一對好基友,色彩反差是色彩理論的角落裡的一塊小石頭,色彩理論是非常複雜和富有挑戰性的,而色彩反差則相對比較容易掌握。下面是一個色輪,色彩反差就是找兩個互補的顏色用在你的模型上,所謂互補的顏色就是在色輪上,你選取一個顏色,和這個顏色相對位置的一個顏色,我們稱之為補色。