本内容为【科研私家菜】R可视化之美之科研绘图系列课程
快来收藏关注【科研私家菜】
01 等高线图( contour map )
等高线图( contour map )是可视化二维空间标量场的基本方法,可以将三维数据使用二维的方法可视化,同时用颜色视觉特征表示第三维数据,如地图上的等高线、天气预报中的等压线和等温线等。假设f(x, y)是在点(x, y)处的数值,等值线是在二维数据场中满足f(x, y)=c的空间点集按-定的顺序连接而成的线。数值为C的等值线可以将二维空间标量场分为两部分:如果f(x, y)<e,则该点在等值线内;如果f(x, y)>c,则该点在等值线外。
02 R语言实现
R中的ggplot2 包提供的geom_tile()函 数和geom_raster()函数都 可以绘制热力分布图,其主要区别在于geom_raster()函数中存在interpolate=TRUE/FALSE 这个参数,决定是否对热力图进行平滑处理。添加geom contour()函数, 从而可以添加等高线。使用directlabels包的direct.labe(0函数可以添加等高线的数值标签。
library(ggplot2)
library( directlabels)
library(RColorBrewer)
rf <- colorRampPalette(rev(brewer.pal(11,'Spectral')))
colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32)
z<-as.matrix(read.table("等高线.txt",header=TRUE))
colnames(z)<-seq(1,ncol(z),by=1)
max_z<-max(z)
min_z<-min(z)
breaks_lines<-seq(min(z),max(z),by=(max_z-min_z)/10)
map<-melt(z)
colnames(map)<-c("Var1","Var2","value")
head(map)
Contour<-ggplot(map,aes(x=Var1,y=Var2,z=value))+
geom_tile(aes(fill=value))+#根据高度填充
scale_fill_gradientn(colours=colormap)+
geom_contour(aes(colour= ..level..),breaks=breaks_lines,color="black")+#
labs(x="X-Axis",y="Y-Axis",fill="Z-Value")+
theme(
axis.title=element_text(size=15,face="plain",color="black"),
axis.text = element_text(size=13,face="plain",color="black"),
legend.title=element_text(size=13,face="plain",color="black"),
legend.text = element_text(size=11,face="plain",color="black"),
legend.background = element_blank(),
legend.position =c(0.15,0.2)
)
Contour
direct.label(Contour, list("bottom.pieces", cex=0.8, #"far.from.others.borders",
fontface="plain", fontfamily="serif", colour='black'))
效果如下:
参考资料
《R语言数据可视化之美》
关注R小盐,关注科研私家菜(溦❤工众號: SciPrivate),有问题请联系R小盐。让我们一起来学习 R可视化之美之科研绘图