R-ggplot2

2021-12-05 23:15:27 浏览数 (1)

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)

0 人点赞