ggplot2 无法绘制真正的 3D 曲面,但您可以使用 geom_contour()
、 geom_contour_filled()
和 geom_tile()
在 2D 中可视化 3D 曲面。
这些函数需要常规数据,其中x
和y
坐标形成等间距网格,并且x
和y
的每个组合出现一次。允许缺失 z
值,但轮廓绘制仅适用于所有四个角均不缺失的网格点。如果您有不规则的数据,则需要在可视化之前首先使用 interp::interp()
、 akima::bilinear()
或类似工具对网格进行插值。
用法
geom_contour(
mapping = NULL,
data = NULL,
stat = "contour",
position = "identity",
...,
bins = NULL,
binwidth = NULL,
breaks = NULL,
lineend = "butt",
linejoin = "round",
linemitre = 10,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
geom_contour_filled(
mapping = NULL,
data = NULL,
stat = "contour_filled",
position = "identity",
...,
bins = NULL,
binwidth = NULL,
breaks = NULL,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
stat_contour(
mapping = NULL,
data = NULL,
geom = "contour",
position = "identity",
...,
bins = NULL,
binwidth = NULL,
breaks = NULL,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
stat_contour_filled(
mapping = NULL,
data = NULL,
geom = "contour_filled",
position = "identity",
...,
bins = NULL,
binwidth = NULL,
breaks = NULL,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
参数
- mapping
-
由
aes()
创建的一组美学映射。如果指定且inherit.aes = TRUE
(默认),它将与绘图顶层的默认映射组合。如果没有绘图映射,则必须提供mapping
。 - data
-
该层要显示的数据。有以下三种选择:
如果默认为
NULL
,则数据继承自ggplot()
调用中指定的绘图数据。data.frame
或其他对象将覆盖绘图数据。所有对象都将被强化以生成 DataFrame 。请参阅fortify()
将为其创建变量。将使用单个参数(绘图数据)调用
function
。返回值必须是data.frame
,并将用作图层数据。可以从formula
创建function
(例如~ head(.x, 10)
)。 - stat
-
用于该层数据的统计变换,可以作为
ggproto
Geom
子类,也可以作为命名去掉stat_
前缀的统计数据的字符串(例如"count"
而不是"stat_count"
) - position
-
位置调整,可以是命名调整的字符串(例如
"jitter"
使用position_jitter
),也可以是调用位置调整函数的结果。如果需要更改调整设置,请使用后者。 - ...
-
其他参数传递给
layer()
。这些通常是美学,用于将美学设置为固定值,例如colour = "red"
或size = 3
。它们也可能是配对的 geom/stat 的参数。 - bins
-
轮廓箱的数量。被
breaks
覆盖。 - binwidth
-
轮廓箱的宽度。被
bins
覆盖。 - breaks
-
之一:
-
用于设置轮廓中断的数值向量
-
该函数将数据范围和 binwidth 作为输入,并返回中断作为输出。可以根据公式创建函数(例如 ~ fullseq(.x, .y))。
覆盖
binwidth
和bins
。默认情况下,这是一个长度为 10 且带有pretty()
中断的向量。 -
- lineend
-
线端样式(圆形、对接、方形)。
- linejoin
-
线连接样式(圆形、斜接、斜角)。
- linemitre
-
线斜接限制(数量大于 1)。
- na.rm
-
如果
FALSE
,则默认缺失值将被删除并带有警告。如果TRUE
,缺失值将被静默删除。 - show.legend
-
合乎逻辑的。该层是否应该包含在图例中?
NA
(默认值)包括是否映射了任何美学。FALSE
从不包含,而TRUE
始终包含。它也可以是一个命名的逻辑向量,以精细地选择要显示的美学。 - inherit.aes
-
如果
FALSE
,则覆盖默认美学,而不是与它们组合。这对于定义数据和美观的辅助函数最有用,并且不应继承默认绘图规范的行为,例如borders()
。 - geom
-
用于显示数据的几何对象,可以作为
ggproto
Geom
子类,也可以作为命名去除geom_
前缀的几何对象的字符串(例如"point"
而不是"geom_point"
)
美学
geom_contour()
理解以下美学(所需的美学以粗体显示):
-
x
-
y
-
alpha
-
colour
-
group
-
linetype
-
linewidth
-
weight
在 vignette("ggplot2-specs")
中了解有关设置这些美学的更多信息。
geom_contour_filled()
理解以下美学(所需的美学以粗体显示):
-
x
-
y
-
alpha
-
colour
-
fill
-
group
-
linetype
-
linewidth
-
subgroup
在 vignette("ggplot2-specs")
中了解有关设置这些美学的更多信息。
stat_contour()
理解以下美学(所需的美学以粗体显示):
-
x
-
y
-
z
-
group
-
order
在 vignette("ggplot2-specs")
中了解有关设置这些美学的更多信息。
stat_contour_filled()
理解以下美学(所需的美学以粗体显示):
-
x
-
y
-
z
-
fill
-
group
-
order
在 vignette("ggplot2-specs")
中了解有关设置这些美学的更多信息。
计算变量
这些是由层的 'stat' 部分计算的,可以使用 delayed evaluation 访问。等高线(由 stat_contour()
计算)和等高线带(填充轮廓,由 stat_contour_filled()
计算)的计算变量略有不同。变量 nlevel
和 piece
对两者均可用,而 level_low
、 level_high
和 level_mid
仅适用于频段。变量 level
是一个数字或一个因子,具体取决于是计算线还是带。
-
after_stat(level)
轮廓高度。对于等高线,这是表示 bin 边界的数值向量。对于等值线带,这是表示 bin 范围的有序因子。 -
after_stat(level_low)
,after_stat(level_high)
,after_stat(level_mid)
(仅限等值线带)每个带的下箱边界和上箱边界,以及边界之间的中点。 -
after_stat(nlevel)
轮廓高度,最大缩放至 1。 -
after_stat(piece)
轮廓块(整数)。
也可以看看
geom_density_2d()
:二维密度等值线
例子
# Basic plot
v <- ggplot(faithfuld, aes(waiting, eruptions, z = density))
v + geom_contour()
# Or compute from raw data
ggplot(faithful, aes(waiting, eruptions)) +
geom_density_2d()
# \donttest{
# use geom_contour_filled() for filled contours
v + geom_contour_filled()
# Setting bins creates evenly spaced contours in the range of the data
v + geom_contour(bins = 3)
v + geom_contour(bins = 5)
# Setting binwidth does the same thing, parameterised by the distance
# between contours
v + geom_contour(binwidth = 0.01)
v + geom_contour(binwidth = 0.001)
# Other parameters
v + geom_contour(aes(colour = after_stat(level)))
v + geom_contour(colour = "red")
v + geom_raster(aes(fill = density)) +
geom_contour(colour = "white")
# }
相关用法
- R ggplot2 geom_count 计算重叠点
- R ggplot2 geom_qq 分位数-分位数图
- R ggplot2 geom_spoke 由位置、方向和距离参数化的线段
- R ggplot2 geom_quantile 分位数回归
- R ggplot2 geom_text 文本
- R ggplot2 geom_ribbon 函数区和面积图
- R ggplot2 geom_boxplot 盒须图(Tukey 风格)
- R ggplot2 geom_hex 二维箱计数的六边形热图
- R ggplot2 geom_bar 条形图
- R ggplot2 geom_bin_2d 二维 bin 计数热图
- R ggplot2 geom_jitter 抖动点
- R ggplot2 geom_point 积分
- R ggplot2 geom_linerange 垂直间隔:线、横线和误差线
- R ggplot2 geom_blank 什么也不画
- R ggplot2 geom_path 连接观察结果
- R ggplot2 geom_violin 小提琴情节
- R ggplot2 geom_dotplot 点图
- R ggplot2 geom_errorbarh 水平误差线
- R ggplot2 geom_function 将函数绘制为连续曲线
- R ggplot2 geom_polygon 多边形
- R ggplot2 geom_histogram 直方图和频数多边形
- R ggplot2 geom_tile 矩形
- R ggplot2 geom_segment 线段和曲线
- R ggplot2 geom_density_2d 二维密度估计的等值线
- R ggplot2 geom_map 参考Map中的多边形
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 2D contours of a 3D surface。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。