geom_segment()
在点 (x, y) 和 (xend, Yend) 之间绘制一条直线。 geom_curve()
绘制一条曲线。有关控制曲线的参数,请参阅底层绘图函数grid::curveGrob()
。
用法
geom_segment(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
...,
arrow = NULL,
arrow.fill = NULL,
lineend = "butt",
linejoin = "round",
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
geom_curve(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
...,
curvature = 0.5,
angle = 90,
ncp = 5,
arrow = NULL,
arrow.fill = NULL,
lineend = "butt",
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 的参数。 - arrow
-
箭头规范,由
grid::arrow()
创建。 - arrow.fill
-
用于箭头的填充颜色(如果关闭)。
NULL
意味着使用colour
美学。 - lineend
-
线端样式(圆形、对接、方形)。
- linejoin
-
线连接样式(圆形、斜接、斜角)。
- na.rm
-
如果
FALSE
,则默认缺失值将被删除并带有警告。如果TRUE
,缺失值将被静默删除。 - show.legend
-
合乎逻辑的。该层是否应该包含在图例中?
NA
(默认值)包括是否映射了任何美学。FALSE
从不包含,而TRUE
始终包含。它也可以是一个命名的逻辑向量,以精细地选择要显示的美学。 - inherit.aes
-
如果
FALSE
,则覆盖默认美学,而不是与它们组合。这对于定义数据和美观的辅助函数最有用,并且不应继承默认绘图规范的行为,例如borders()
。 - curvature
-
给出曲率量的数值。负值产生左手曲线,正值产生右手曲线,零产生直线。
- angle
-
0 到 180 之间的数值,给出曲线控制点的倾斜量。小于 90 的值使曲线向起点倾斜,大于 90 的值使曲线向终点倾斜。
- ncp
-
用于绘制曲线的控制点的数量。更多控制点可创建更平滑的曲线。
细节
两种几何图形都为每种情况绘制一条线段/曲线。如果您需要跨多个案例连接点,请参阅geom_path()
。
美学
geom_segment()
理解以下美学(所需的美学以粗体显示):
-
x
-
y
-
xend
-
yend
-
alpha
-
colour
-
group
-
linetype
-
linewidth
在 vignette("ggplot2-specs")
中了解有关设置这些美学的更多信息。
也可以看看
geom_path()
和 geom_line()
用于多段线和路径。
geom_spoke()
用于由位置 (x, y) 以及角度和半径参数化的线段。
例子
b <- ggplot(mtcars, aes(wt, mpg)) +
geom_point()
df <- data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 15.0)
b +
geom_curve(aes(x = x1, y = y1, xend = x2, yend = y2, colour = "curve"), data = df) +
geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2, colour = "segment"), data = df)
b + geom_curve(aes(x = x1, y = y1, xend = x2, yend = y2), data = df, curvature = -0.2)
b + geom_curve(aes(x = x1, y = y1, xend = x2, yend = y2), data = df, curvature = 1)
b + geom_curve(
aes(x = x1, y = y1, xend = x2, yend = y2),
data = df,
arrow = arrow(length = unit(0.03, "npc"))
)
if (requireNamespace('maps', quietly = TRUE)) {
ggplot(seals, aes(long, lat)) +
geom_segment(aes(xend = long + delta_long, yend = lat + delta_lat),
arrow = arrow(length = unit(0.1,"cm"))) +
borders("state")
}
# Use lineend and linejoin to change the style of the segments
df2 <- expand.grid(
lineend = c('round', 'butt', 'square'),
linejoin = c('round', 'mitre', 'bevel'),
stringsAsFactors = FALSE
)
df2 <- data.frame(df2, y = 1:9)
ggplot(df2, aes(x = 1, y = y, xend = 2, yend = y, label = paste(lineend, linejoin))) +
geom_segment(
lineend = df2$lineend, linejoin = df2$linejoin,
size = 3, arrow = arrow(length = unit(0.3, "inches"))
) +
geom_text(hjust = 'outside', nudge_x = -0.2) +
xlim(0.5, 2)
# You can also use geom_segment to recreate plot(type = "h") :
set.seed(1)
counts <- as.data.frame(table(x = rpois(100,5)))
counts$x <- as.numeric(as.character(counts$x))
with(counts, plot(x, Freq, type = "h", lwd = 10))
ggplot(counts, aes(x, Freq)) +
geom_segment(aes(xend = x, yend = 0), linewidth = 10, lineend = "butt")
相关用法
- R ggplot2 geom_spoke 由位置、方向和距离参数化的线段
- R ggplot2 geom_smooth 平滑条件均值
- R ggplot2 geom_qq 分位数-分位数图
- 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_density_2d 二维密度估计的等值线
- R ggplot2 geom_map 参考Map中的多边形
- R ggplot2 geom_density 平滑密度估计
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Line segments and curves。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。