R语言调色板(Australia风格)

本文原文是:https://ropensci.org/blog/2017/11/21/ochre/

本文为翻译版本,如果有什么错误,反映指正。

不知道为什么,这个推文是写在2017年的,但是最近在推特上的R圈很火爆(2020年6月17日)。因此不如翻译给大家看看。也是希望大家画出来的图更加的好看优雅。

几周之前,第二届的rOpenSci OzUnConf在澳大利亚墨尔本举行,各个行业的科学家、开发者、喜欢R的人们欢聚一堂,讨论一些关于R很多有趣的项目,互相交流也学到很多,在这个会议开始之前,GitHub的unconf仓库里面,出现了很多好玩的优秀的项目,其中有一个issue引起了六位数据可视化爱好者的注意。因此ochRe包诞生了。

 

ochRe包的包含的调色板是受澳大利亚陆地颜色、本地的标志性艺术家风格影响的。这个包最初是Di Cook的艺术结晶,他也是受Karthik Ram的wesanderson包影响的。

 

为什么叫 ochre?

在完成所有的开发任务之后,给包取名字是我们面临的最重要的工作。好吃的蛋糕促使我们希望给包取名字花费更多的时间(为了多吃一点零食?)。幸运的是,不到5分钟,我们就一致同意这个名字,这意味着我们可以将省下的蛋糕用于我们开发包的时候吃。

Ochre是澳大利亚许多地方发现的天然存在的矿石的颜料——棕黄色。这个是非常常见的,以至于澳大利亚被誉为“棕黄色矿石之乡”。另外这个矿石已经被澳大利亚人用了几百年了,从艺术品的颜色涂料到保护动物皮肤,这个矿石对当地人是至关重要的。

 

开发 ochRe

开发这个包从挑选澳大利亚的标志性艺术品开始(这个花费了我们很长时间,当我们选好艺术品照片,我们就会提取这个艺术品的主要的颜色,然后获得这个主要的颜色的16位编码主要工具就是:https://www.coolphptools.com/color_extract

如果有的图像的颜色更加不确定,我们使用macos系统的eyeydropper软件。或者google chrome浏览器的插件:colourPick )

一旦我们对每个调色板的颜色、代码、色彩顺序感到满意,我们就会将与之相关的16位颜色编码以及颜色名字放到ochRe包里。面。当使用ggplot2的时候,我们还将包适用于scale包,这样可以用来改善包的功能性。尤其是适用于衍射渐变和透明度的变化。这个包还包含一些用于显示不同调色板的功能。

下面是一些原始艺术品及其相关调色板的示例:

namatjra_qual 和namatjra_div都是收到水彩画Twin Ghosts启发的。是原著居民艺术家Albert Namajira画的。namatjira_div是用来画离散数据的。

 

 

nolan_ned调色板是受到艺术家Sidney Nolan画的Ned Kelly

 

olsen_seq是被用来设计画连续性变量的。比如热力图或者地理图层之类的。这个调色板是来至抽象画派的Sydney Sun。这个画是由John Olsen于1965年画的。

这个会议有很多生态学家。这激发了有些悲观的主题,比如:health_reef 、dead_reef调色板。来源于大堡礁水下的照片。

 

介绍ochRe

这个包包含16个调色板。具体的颜色和名字如下:

第一步安装:

# You need to install the 'devtools' package first
devtools::install_github("ropenscilabs/ochRe")

 

第二步查看细节:

library(ochRe)
pal_names <- names(ochre_palettes)

par(mfrow=c(length(ochre_palettes)/2, 2), lheight = 2, mar=rep(1, 4), adj = 0)
for (i in 1:length(ochre_palettes)){
  viz_palette(ochre_palettes[[i]], pal_names[i])
}

这里有一些案例,教你如何使用这个包的调色板。包括ggplot2和base两个系统

一个案例是使用base系统画图,这个调色板叫winmar。这是源于“Nicky Winmar St Kilda Footballer”。由Wayne Ludbey于1993年画的。在这个图中,AFL比赛中原居民AFL球员Nicky Winmar裸露自己的皮肤以应对种族歧视。

 

## basic example code
pal <- colorRampPalette(ochre_palettes[["winmar"]])
image(volcano, col = pal(20))

配对散点图使用的是emu_Woman_paired调色板,源于Emu Woman。是由Emily Kame Kngwarreye于1988-89年创作的。

library(tidyverse)
library(ochRe)
library(naniar)

# Exploring missing values benefits from a paired palette, like the emu women
# Here missing status on air temperature is shown in a plot of the two wind variables
data(oceanbuoys)
oceanbuoys <- oceanbuoys %>% add_shadow(humidity, air_temp_c) 
ggplot(oceanbuoys, aes(x=wind_ew, y=wind_ns, colour=air_temp_c_NA)) + 
    geom_point(alpha=0.8) + 
    scale_colour_ochre(palette="emu_woman_paired") +
    theme_bw() + theme(aspect.ratio=1)

# Slightly more complicated, forcing the pairs
clrs <- ochre_palettes$emu_woman_paired[11:12]
ggplot(oceanbuoys, aes(x=wind_ew, y=wind_ns, colour=air_temp_c_NA)) + 
    geom_point(alpha=0.8) + 
    scale_colour_manual(values=clrs) +
    theme_bw() + theme(aspect.ratio=1)

 

 下面是一个澳大利亚选举人数填充图,使用的是galah调色板。Galahs是澳大利亚大陆各地发现的一种凤头鹦鹉物种中的常见品种。

 

# Map of the 2016 Australian electoral boundaries
# with the galah palette
library(eechidna)
library(ggthemes)
data(nat_map_2016)
data(nat_data_2016)
ggplot(aes(map_id=id), data=nat_data_2016) +
    geom_map(aes(fill=Area_SqKm), map=nat_map_2016) +
    expand_limits(x=nat_map$long, y=nat_map$lat) + 
    scale_fill_ochre(palette="galah", discrete=FALSE) +
    theme_map()

 

注意这个代码好像运行不出来。也就不用运行了,注意填充的颜色。

 下面的图的颜色是使用的是parliament调色板,这个调色板来源于tapestry。是由Arthur Boyd在国会大厅发现的。

# Election results
senate <- read_csv("http://results.aec.gov.au/20499/Website/Downloads/SenateSenatorsElectedDownload-20499.csv", 
                   skip = 1)
coalition <- c("Country Liberals (NT)", "Liberal", "Liberal National Party of Queensland", 
               "The Nationals")
labor <- c("Australian Labor Party", "Australian Labor Party (Northern Territory) Branch", 
           "Labor")
greens <- c("The Greens", "Australian Greens", "The Greens (WA)")

senate <- senate %>% mutate(PartyNm = ifelse(as.character(PartyNm) %in% coalition, 
                                             "Liberal National Coalition", PartyNm))

senate <- senate %>% mutate(PartyNm = ifelse(as.character(PartyNm) %in% labor, 
                                             "Australian Labor Party", PartyNm))

senate <- senate %>% mutate(PartyNm = ifelse(as.character(PartyNm) %in% greens, 
                                             "Australian Greens", PartyNm))

senate$PartyNm <- factor(senate$PartyNm, 
                         levels = names(sort(table(senate$PartyNm), 
                            decreasing = T)))

ggplot(data = senate, aes(x = PartyNm, fill = PartyNm)) + 
    geom_bar() + xlab("") + 
    ylab("") + scale_fill_ochre(palette="parliament") + coord_flip() + 
    theme_bw() + theme(legend.position = "None") 
 

 

如果想要获得更多的内容,可以看看这个说明书:https://github.com/ropenscilabs/ochRe/tree/master/vignettes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuanzhoulvpi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值