# R可视乎|等高线图

## 简介

#所需的包
library(reshape2) #数据处理相关
library(ggplot2) # 绘图相关
library(grDevices) #绘图颜色相关
library(RColorBrewer)#绘图颜色相关
library(directlabels) #等高线相关


## 数据介绍

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) #这个函数来自reshape2（处理数据的包）介绍一下这个函数，以及相关函数
dim(map)
colnames(map)<-c("Var1","Var2","value")


reshape2包中的melt()函数可将数据从左图转换呈右图的数据形式（下面图片可滑动查看！）。

<<< 左右滑动见更多 >>>

rf <- colorRampPalette(rev(brewer.pal(11,'Spectral')))
colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32)


## 热力分布图

• 拓展：scale_*_gradient创建一个双色梯度(低-高)，scale_*_gradient2创建一个渐变的颜色梯度(低-中-高)，scale_*_gradientn创建一个n色梯度。
ggplot(map,aes(x=Var1,y=Var2,z=value))+
geom_tile(aes(fill=value))+


## 添加等高线

ggplot(map,aes(x=Var1,y=Var2,z=value))+
geom_tile(aes(fill=value))+#根据高度填充
geom_contour(breaks=breaks_lines,color="black")+#
labs(x="X-Axis",y="Y-Axis",fill="Z-Value")


## 设置主题

Contour <- ggplot(map,aes(x=Var1,y=Var2,z=value))+
geom_tile(aes(fill=value))+#根据高度填充
geom_contour(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,
fontface="plain", fontfamily="serif", colour='black'))


### 参考资料

[1]

R语言数据可视化之美: https://github.com/EasyChart/Beautiful-Visualization-with-R

[2]

Using 2D Contour Plots within {ggplot2} to Visualize Relationships between Three Variables: https://www.r-bloggers.com/2016/07/using-2d-contour-plots-within-ggplot2-to-visualize-relationships-between-three-variables/

[3]

A guide to contour maps: https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783989508/4/ch04lvl1sec49/a-guide-to-contour-maps

[4]

Contour Plots in R: https://plotly.com/r/contour-plots/

0 条评论

• ### R可视乎|饼图

饼图（pie chart）被广泛地应用于各个领域，用于表示不同分类的占比情况，通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个切片，整个圆...

• ### R可视乎|圆环图

对于饼图，上一次学习《R语言数据可视化之美》的时候主要利用graphics包和ggplot包（可见R可视乎|饼图）。这几天的学习中发现还有一个更加简便的方法——...

• ### R可视乎|瀑布图

瀑布图（waterfall plot） 用于展示拥有相同的X轴变量数据（如相同的时间序列）、不同的Y轴离散型变量（如不同的类别变量）和Z轴数值变量，可以清晰地展...

• ### R可视乎|气泡图

气泡图是一种多变量图表，是散点图的变体，也可以认为是散点图和百分比区域图的组合[1]。气泡图最基本的用法是使用三个值来确定每个数据序列，和散点图一样。气泡图通过...

• ### R可视乎|马赛克图

马赛克图（mosaic plot），显示分类数据中一对变量之间的关系，原理类似双向的100%堆叠式条形图，但其中所有条形在数值/标尺轴上具有相等长度，并会被划分...

• ### R可视乎|分面一页多图

双变量数据可视化可能对于我们比较简单， 但是如果变量是三个或者更多，怎么在一幅图一起显示呢？今天我们就来讨论这个问题，解决方案有两种。

• ### R可视乎|复合饼图系列

散点复合饼图（compound scatter and pie chart）可以展示三个数据变量的信息：(x, y, P)，其中x和y决定气泡在直角坐标系中的位...

• ### R可视乎 | 散点图系列（1）

散点图（scatter graph、point graph、X-Y plot、scatter chart ）是科研绘图中最常见的图表类型之一，通常用于显示和比较...

• ### R可视乎 | 散点图系列（2）

散点图（scatter graph、point graph、X-Y plot、scatter chart ）是科研绘图中最常见的图表类型之一，通常用于显示和比较...

• ### R可视乎｜克利夫兰点图系列

在可靠性实验中，不同产品的测试失效时间可以通过克利夫兰点图进行可视化，今天就对该系列的图进行系统的介绍。主要参考张杰博士的《R语言数据可视化之美》[1]，并结合...

• ### R可视乎|决策树结果可视化

决策树是一种非常有用的分类方法，它能够对新出现的对象给出正确的分类。比起文本描述的规则，我们更希望能使用图形来直观展示决策树的结果，这就是本文介绍的重点——决策...

• ### 工具 | R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 往箱线图添加槽口和均值 绘制2D等高线 绘制2D密度图 数据分布图简介 中医上讲...

• ### R可视乎｜空间地理数据可视化（1）

研究生讨论班第一次用 slides 作报告，主要讲了《Geospatial Health Data》[1]一书中关于空间地理数据可视化的内容。文末给出对应的 p...

• ### R可视乎｜主成分分析结果可视化

主成分分析法是很常用的一种数据降维方法[1]。该方法可以减少数据的维数，并保持对方差贡献最大的特征，相当于保留低阶主成分，忽略高阶主成分。

• ### R可视乎|2021年日历大派送

一眨眼2020即将过去，2020年是杂乱的一年，感谢我们还活着。让我们放下这年，展望2021年吧。要不用R给2021年做个私人定制版日历吧？

• ### R语言可视化——折线图、平滑曲线及路径图

今天跟大家讲关于路径图、平滑曲线与折线图及其美化。 这里涉及到三个设计线条的特殊图层函数： geom_smooth()、geom_path()、geom_li...

• ### R可视乎｜ggplot常用主题风格汇总

借助theme()函数，可以自定义ggplot2图表的任何部分。幸运的是，可以使用大量的预构建主题，仅用一行代码即可获得良好的样式。

• ### R语言可视化——ggplot图表中的线条

今天跟大家分享的是ggplot图表中的一类重要元素——线条。 不要觉得专门为线条写一章推送有点小题大做，其实线条对于图表而言，功不可没，即便是不起眼的网格、轴线...

• ### R语言之可视化（27）ggplot2绘制线图

本文主要表达如何使用ggplot2绘制线图。线图一般表达的目的是：某个因变量随着自变量改变而变化的趋势。因变量可以为数值型变量或者分类变量。可供选的函数有： g...