目錄
- 0.問題導(dǎo)入
- 1.示例數(shù)據(jù)
- 2.導(dǎo)入示例數(shù)據(jù)
- 3.離散類型連續(xù)化
- 4.繪圖數(shù)據(jù)框構(gòu)建
- 5.將密度圖與點(diǎn)圖疊加(圖2)
- 6.總結(jié)
- 7.本文所使用的R-packages(沒有的小伙伴需要使用install.packages()進(jìn)行安裝)
- 8.致謝
0. 問題導(dǎo)入
科研過程中咳榜,我們可能會遇到想把樣本點(diǎn)放到總體的概率統(tǒng)計(jì)圖上拄养,同時(shí)體現(xiàn)樣本點(diǎn)的類型溪王,類似于下面兩圖的疊加(圖1)沉迹。但這樣會面臨如下兩個問題:
1. 如何繪制雙坐標(biāo)軸浪谴?
2. 如何將continuous 與 discrete 類型的坐標(biāo)軸同時(shí)體現(xiàn)开睡?
本篇給出解決方案~
1. 示例數(shù)據(jù)
點(diǎn)擊下載示例數(shù)據(jù):
用于繪制總體概率統(tǒng)計(jì)圖的數(shù)據(jù)
用于繪制具有類型特征樣本點(diǎn)的數(shù)據(jù)
2. 導(dǎo)入示例數(shù)據(jù)
data1 = read.csv("NDVI_veg.csv", header = T)
data2 = read.csv('NDVI_all.csv',header = T)
head(data1)
season ndvi sd types type
1 Spring 0.418 0.105 PA 2
2 Summer 0.742 0.127 PA 2
3 Autumn 0.722 0.088 PA 2
4 Winter 0.214 0.055 PA 2
5 Spring 0.338 0.054 SA 4
6 Summer 0.519 0.079 SA 4
head(data2)
season NDVI
1 spring 0.4492719
2 spring 0.4492719
3 spring 0.4597081
4 spring 0.4492719
5 spring 0.4350913
6 spring 0.4685998
3. 離散類型連續(xù)化
這一步主要實(shí)現(xiàn)將data1中types進(jìn)行連續(xù)化因苹,為兩圖疊加做準(zhǔn)備。
tell_type <- function(x){
b = 0
if(x == 'PA'){
b = 2
}else if(x == 'SA'){
b = 4
}else if(x == 'SM'){
b = 6
}else{
b = 8
}
}
data1$type = sapply(data1$types,tell_type)
labels = unique(data1$types)
4. 繪圖數(shù)據(jù)框構(gòu)建
其中df1 主要用于繪制密度圖篇恒,df2主要用于繪制點(diǎn)圖扶檐,為保證df1與df2可以合并為一個df,則在df1中增加type項(xiàng)婚度,并設(shè)置取值為NA蘸秘。
df1 = data.frame(NDVI = data2$NDVI,season = data2$season,type = NA)
df2 = data.frame(NDVI = data1$ndvi,season = tolower(data1$season),type = data1$type )
df = rbind(df1,df2)
head(df)
NDVI season type
1 0.4492719 spring NA
2 0.4492719 spring NA
3 0.4597081 spring NA
4 0.4492719 spring NA
5 0.4350913 spring NA
6 0.4685998 spring NA
5. 將密度圖與點(diǎn)圖疊加(圖2)
p =ggplot()+
geom_density(data = df,aes(x = NDVI,y= ..density..,fill = season),alpha = 0.5)+
geom_point(data = df,aes(x = NDVI,y = type,color = factor(type)),size = 4)+
scale_y_continuous(
breaks = c(2,4,6,8),
sec.axis = sec_axis( ~ . +0, breaks = c(2,4,6,8),labels = labels,
name = "Type")
)+
scale_color_manual(values = c('red','yellow','blue','green'))+
theme_bw()+
theme(
axis.text = element_text(face = 'bold',color = 'black',size = 12,hjust = 0.5),
axis.title = element_text(face = 'bold',color = 'black',size = 14,hjust = 0.5),
legend.text = element_text(face = 'bold',color = 'black',size = 12,hjust = 0.5),
legend.title = element_text(face = 'bold',color = 'black',size = 12,hjust = 0.5),
legend.position = 'bottom',
legend.direction = 'horizontal'
)+
ylab("NDVI")+
xlab("Density")
png('plot1.png',
height = 20,
width = 20,
units = 'cm',
res = 800)
print(p)
dev.off()
6. 總結(jié)
本篇通過將離散數(shù)據(jù)連續(xù)化,通過雙坐標(biāo)軸的形式將密度圖與點(diǎn)圖進(jìn)行疊加繪制蝗茁,主要解決了以下問題:
1. 如何繪制雙坐標(biāo)軸醋虏?
2. 如何將continuous 與 discrete 類型的坐標(biāo)軸同時(shí)體現(xiàn)?
7. 本文所使用的R-packages(沒有的小伙伴需要使用install.packages()進(jìn)行安裝)
library('ggplot2')
8. 致謝
首先哮翘,祝大家圣誕節(jié)快樂哈>苯馈!饭寺!
感謝大家的持續(xù)關(guān)注阻课,小編會繼續(xù)努力,持續(xù)更新下去的艰匙!
大家如果覺得有用限煞,還麻煩大家轉(zhuǎn)發(fā)點(diǎn)贊加關(guān)注哈,也可以擴(kuò)散到朋友圈员凝,多謝大家啦~
大家如果在使用本文代碼的過程有遇到問題的署驻,可以留言評論,也可以私信我哈~~