BUT, HOWEVER
组会上把精心调好的图展示出来的时候,还是有时候会觉得不太好看
于是乎就有了今天这篇帖子,旨在搜罗网上比较全的颜色贴,好好滴总结一波,希望可以帮到同样是选择困难症的你。
绘图所用软件包附于文末, PS:多图预警!!图片加载可能需要画20秒左右,内容精彩,值得期待哈~
1. 示例数据
本次演示采用“[全球sc-
PDSI(干旱指数)1901-2018年的月尺度数据](https://links.jianshu.com/go?to=https://crudata.uea.ac.uk/cru/data/drought/)”
中的2018年12月的数据进行绘图示例。同之前,为了大家下载方便,下附百度云下载链接(如果觉得慢,也可以去数据官网进行下载):
数据下载链接
2. 数据导入与底图绘制
代码语言:javascript复制input_data = 'L:\JianShu\2019-12-07\data\scpdsi_1901_2018.nc'data =
stack(input_data)data = data[1416] #2018-12df = as.data.frame(data,xy =
T)colnames(df) = c('long','lat','scpdsi')na_index = which(is.na(df$scpdsi))df
= df-na_index,df$DC = cut(df$scpdsi, breaks =
c(-Inf,-5,-4,-3,-2,-1,Inf))df$DC = factor(df$DC, labels = c('Exceptional
Drought', 'Extreme Drought', 'Severe Drought', "Moderate Drought", 'Abnormally
Dry', 'No Drought'))# fill barp = ggplot() geom_hline(aes(yintercept =
50),linetype = 'dashed',alpha = 0.5,lwd = 0.5,color = 'black')
geom_hline(aes(yintercept = 0),linetype = 'dashed',alpha = 0.5,lwd = 0.5,color
= 'black') geom_hline(aes(yintercept = -50),linetype = 'dashed',alpha =
0.5,lwd = 0.5,color = 'black') geom_vline(aes(xintercept = 0),linetype =
'dashed',alpha = 0.5,lwd = 0.5,color = 'black') geom_vline(aes(xintercept =
-100),linetype = 'dashed',alpha = 0.5,lwd = 0.5,color = 'black')
geom_vline(aes(xintercept = 100),linetype = 'dashed',alpha = 0.5,lwd =
0.5,color = 'black') geom_tile(data = df, aes(x = long,y = lat, fill = DC))
theme(panel.background = element_rect(fill = 'transparent',color = 'black'),
axis.text = element_text(face='bold',colour='black',size=fontsize,hjust=.5),
axis.title = element_text(face='bold',colour='black',size=fontsize,hjust=.5),
legend.position=c('bottom'), legend.direction = c('horizontal'))
coord_fixed(1.3) guides(fill=guide_legend(nrow=3)) xlab('Longitude')
ylab('Latitude')
3. 增加Viridis 色带
Viridis 色带包由Simon Garnier研发, 包含viridis, magma, plasma,
inferno及默认共5个色带组(图1-2),对应scale_fill/color_viridis(option =" " )中的"A", "B",
"C", "D","E"五个参数。
图1 Viridis 色带组说明
代码语言:javascript复制png('L:\JianShu\2019-12-07\plot\plot_viridis.png',height=15,width=26,units='cm',res=1000)#
print(p_viridis)p_viridis=grid.arrange(p scale_fill_viridis(option='A',discrete=T) labs(x="Virdis
A",y=NULL),p scale_fill_viridis(option='B',discrete=T) labs(x="Virdis
B",y=NULL),p scale_fill_viridis(option='C',discrete=T) labs(x="Virdis
C",y=NULL),p scale_fill_viridis(option='D',discrete=T) labs(x="Virdis
D",y=NULL),p scale_fill_viridis(option='E',discrete=T) labs(x="Virdis
E",y=NULL),ncol=3,nrow=2)dev.off()
图2 Viridis 色带展示
4. 增加 RColorBrewer 色带
RColorBrewer这个应用很广泛了,附色带图谱及应用示例(图3-6)。
图3 Viridis 色带展示
4.1 RColorBrewer 色带组1
代码语言:javascript复制png('L:\JianShu\2019-12-07\plot\plot_rcolor_brewer.png',height=26,width=26,units='cm',res=1000)p_rcolor_brewer=grid.arrange(p scale_fill_brewer(palette='YlOrRd') labs(x="ColorBand:
YlOrRd",y=NULL),p scale_fill_brewer(palette='YlOrBr') labs(x="ColorBand:
YlOrBr",y=NULL),p scale_fill_brewer(palette='YlGnBu') labs(x="ColorBand:
YlGnBu",y=NULL),p scale_fill_brewer(palette='YlGn') labs(x="ColorBand:
YlGn",y=NULL),p scale_fill_brewer(palette='Reds') labs(x="ColorBand:
Reds",y=NULL),p scale_fill_brewer(palette='RdPu') labs(x="ColorBand:
RdPu",y=NULL),p scale_fill_brewer(palette='Purples') labs(x="ColorBand:
Purples",y=NULL),p scale_fill_brewer(palette='PuRd') labs(x="ColorBand:
PuRd",y=NULL),p scale_fill_brewer(palette='PuBuGn') labs(x="ColorBand:
PuBuGn",y=NULL),ncol=3)dev.off()
图4 RColorBrewer 色带组1
4.1 RColorBrewer 色带组2
png('L:\JianShu\2019-12-07\plot\plot_rcolor_brewer2.png',height=26,width=26,units='cm',res=1000)p_rcolor_brewer=grid.arrange(p scale_fill_brewer(palette='PuBu') labs(x="ColorBand:
PuBu",y=NULL),p scale_fill_brewer(palette='OrRd') labs(x="ColorBand:
OrRd",y=NULL),p scale_fill_brewer(palette='Oranges') labs(x="ColorBand:
Oranges",y=NULL),p scale_fill_brewer(palette='Greys') labs(x="ColorBand:
Greys",y=NULL),p scale_fill_brewer(palette='Greens') labs(x="ColorBand:
Greens",y=NULL),p scale_fill_brewer(palette='GnBu') labs(x="ColorBand:
GnBu",y=NULL),p scale_fill_brewer(palette='BuPu') labs(x="ColorBand:
BuPu",y=NULL),p scale_fill_brewer(palette='BuGn') labs(x="ColorBand:
BuGn",y=NULL),p scale_fill_brewer(palette='Blues') labs(x="ColorBand:
Blues",y=NULL),ncol=3)dev.off()
图5 RColorBrewer 色带组2
4.1 RColorBrewer 色带组3
代码语言:javascript复制png('L:\JianShu\2019-12-07\plot\plot_rcolor_brewer3.png',height=15,width=26,units='cm',res=1000)p_rcolor_brewer=grid.arrange(p scale_fill_brewer(palette='RdYlBu') labs(x="ColorBand:
RdYlBu",y=NULL),p scale_fill_brewer(palette='RdBu') labs(x="ColorBand:
RdBu",y=NULL),p scale_fill_brewer(palette='PuOr') labs(x="ColorBand:
PuOr",y=NULL),p scale_fill_brewer(palette='PRGn') labs(x="ColorBand:
PRGn",y=NULL),p scale_fill_brewer(palette='PiYG') labs(x="ColorBand:
PiYG",y=NULL),p scale_fill_brewer(palette='BrBG') labs(x="ColorBand:
BrBG",y=NULL),ncol=3)dev.off()
图6 RColorBrewer 色带组3
5. 增加 GGSCI 色带(来自一些顶级期刊,如柳叶刀)
GGSCI这个色带组收集了一些主流SCI期刊中比较受欢迎与经典的色带组(图7),分别包括:
scale_color/fill_npg(): 对应Nature Publishing Group色带
scale_color/fill_aaas(): 对应American Association for the Advancement of Science
色带
scale_color/fill_lancet: 对应Lancet (柳叶刀)期刊搜集的色带组
scale_color/fill_jco: 对应Journal of Clinical Oncology 色带组
scale_color/fill_tron: 对应Tron Legacy 色带组
代码语言:javascript复制png('L:\JianShu\2019-12-07\plot\plot_ggsci.png',height=15,width=26,units='cm',res=1000)p_rcolor_brewer=grid.arrange(p scale_fill_npg() labs(x="ColorBand:
NRC",y=NULL),p scale_fill_aaas() labs(x='ColorBand:
AAAS',y=NULL),p scale_fill_lancet() labs(x='ColorBand:
Lancet',y=NULL),p scale_fill_jco() labs(x='ColorBand:
JCO',y=NULL),p scale_fill_tron() labs(x='ColorBand:
TRON',y=NULL),ncol=3)dev.off()
图7 GGSCI 色带示例
6. 增加 Wes Anderson色带(来自一些顶级期刊,如柳叶刀)
由于Wes Anderson 色带组中大多颜色带所含颜色数量为4-5个(图8-9),因此在此,我对 df 中的干旱分类组进行压缩,将Abnormal dry
与 No drought 进行合并。
图8 Wes Anderson色带组
代码语言:javascript复制df$DC2=cut(df$scpdsi,breaks=c(-Inf,-5,-4,-3,-2,Inf))df$DC2=factor(df$DC2,labels=c('Exceptional
Drought','Extreme Drought','Severe Drought',"Moderate Drought",'AD and No
Drought'))p1=ggplot() geom_hline(aes(yintercept=50),linetype='dashed',alpha=0.5,lwd=0.5,color='black') geom_hline(aes(yintercept=0),linetype='dashed',alpha=0.5,lwd=0.5,color='black') geom_hline(aes(yintercept=-50),linetype='dashed',alpha=0.5,lwd=0.5,color='black') geom_vline(aes(xintercept=0),linetype='dashed',alpha=0.5,lwd=0.5,color='black') geom_vline(aes(xintercept=-100),linetype='dashed',alpha=0.5,lwd=0.5,color='black') geom_vline(aes(xintercept=100),linetype='dashed',alpha=0.5,lwd=0.5,color='black') geom_tile(data=df,aes(x=long,y=lat,fill=DC2)) theme(panel.background=element_rect(fill='transparent',color='black'),axis.text=element_text(face='bold',colour='black',size=fontsize,hjust=.5),axis.title=element_text(face='bold',colour='black',size=fontsize,hjust=.5),legend.position=c('bottom'),legend.direction=c('horizontal')) coord_fixed(1.3) guides(fill=guide_legend(nrow=3)) xlab('Longitude') ylab('Latitude')png('L:\JianShu\2019-12-07\plot\plot_web_anderson.png',height=26,width=26,units='cm',res=1000)p_rcolor_brewer=grid.arrange(p1 scale_fill_manual(values=wes_palette('Rushmore1')) labs(x="ColorBand:
Rushmore1",y=NULL),p1 scale_fill_manual(values=wes_palette('Zissou1')) labs(x="ColorBand:
Zissou1",y=NULL),p1 scale_fill_manual(values=wes_palette('Darjeeling1')) labs(x="ColorBand:
Darjeeling1",y=NULL),p1 scale_fill_manual(values=wes_palette('BottleRocket2')) labs(x="ColorBand:
BottleRocket2",y=NULL),p1 scale_fill_manual(values=wes_palette('Royal2')) labs(x="ColorBand:
Royal2",y=NULL),p1 scale_fill_manual(values=wes_palette('Darjeeling2')) labs(x="ColorBand:
Darjeeling2",y=NULL),p1 scale_fill_manual(values=wes_palette('FantasticFox1')) labs(x="ColorBand:
FantasticFox1",y=NULL),p1 scale_fill_manual(values=wes_palette('Moonrise3')) labs(x="ColorBand:
Moonrise3",y=NULL),p1 scale_fill_manual(values=wes_palette('Cavalcanti1')) labs(x="ColorBand:
Cavalcanti1",y=NULL),ncol=3)dev.off()
图9 Wes Anderson 色带组示例
7. 本文所用软件包-木有的话,可以用install.packages('软件包名')进行安装
library(viridis)library(RColorBrewer)library(ggsci)library(wesanderson)library(ggplot2)library(gridExtra)