当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R ggplot2 geom_abline 参考线:水平、垂直和对角线


这些几何图形将参考线(有时称为规则)添加到绘图中,无论是水平的、垂直的还是对角线的(由斜率和截距指定)。这些对于注释绘图很有用。

用法

geom_abline(
  mapping = NULL,
  data = NULL,
  ...,
  slope,
  intercept,
  na.rm = FALSE,
  show.legend = NA
)

geom_hline(
  mapping = NULL,
  data = NULL,
  ...,
  yintercept,
  na.rm = FALSE,
  show.legend = NA
)

geom_vline(
  mapping = NULL,
  data = NULL,
  ...,
  xintercept,
  na.rm = FALSE,
  show.legend = NA
)

参数

mapping

aes() 创建的一组美学映射。

data

该层要显示的数据。有以下三种选择:

如果默认为 NULL ,则数据继承自 ggplot() 调用中指定的绘图数据。

data.frame 或其他对象将覆盖绘图数据。所有对象都将被强化以生成 DataFrame 。请参阅fortify() 将为其创建变量。

将使用单个参数(绘图数据)调用function。返回值必须是 data.frame ,并将用作图层数据。可以从 formula 创建 function (例如 ~ head(.x, 10) )。

...

其他参数传递给 layer() 。这些通常是美学,用于将美学设置为固定值,例如 colour = "red"size = 3 。它们也可能是配对的 geom/stat 的参数。

na.rm

如果 FALSE ,则默认缺失值将被删除并带有警告。如果 TRUE ,缺失值将被静默删除。

show.legend

合乎逻辑的。该层是否应该包含在图例中? NA(默认值)包括是否映射了任何美学。 FALSE 从不包含,而 TRUE 始终包含。它也可以是一个命名的逻辑向量,以精细地选择要显示的美学。

xintercept, yintercept, slope, intercept

控制线位置的参数。如果设置了这些,则 datamappingshow.legend 将被覆盖。

细节

这些几何体的行为与其他几何体略有不同。您可以通过两种方式提供参数:作为图层函数的参数,或通过美学。如果您使用参数,例如geom_abline(intercept = 0, slope = 1) ,然后 geom 在幕后创建一个仅包含您提供的数据的新 DataFrame 。这意味着所有方面的线条都是相同的;如果您希望它们在各个方面有所不同,请自己构建 DataFrame 架并使用美学。

与大多数其他几何图形不同,这些几何图形不会从绘图默认继承美学,因为它们不理解绘图中通常设置的 x 和 y 美学。它们也不影响 x 和 y 尺度。

美学

这些几何体是使用 geom_line() 绘制的,因此它们支持相同的美学: alphacolourlinetypelinewidth 。它们还各自具有控制线条位置的美学:

  • geom_vline()xintercept

  • geom_hline()yintercept

  • geom_abline() : slopeintercept

也可以看看

有关向绘图添加直线段的更通用方法,请参阅geom_segment()

例子

p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()

# Fixed values
p + geom_vline(xintercept = 5)

p + geom_vline(xintercept = 1:5)

p + geom_hline(yintercept = 20)


p + geom_abline() # Can't see it - outside the range of the data

p + geom_abline(intercept = 20)


# Calculate slope and intercept of line of best fit
coef(lm(mpg ~ wt, data = mtcars))
#> (Intercept)          wt 
#>   37.285126   -5.344472 
p + geom_abline(intercept = 37, slope = -5)

# But this is easier to do with geom_smooth:
p + geom_smooth(method = "lm", se = FALSE)
#> `geom_smooth()` using formula = 'y ~ x'


# To show different lines in different facets, use aesthetics
p <- ggplot(mtcars, aes(mpg, wt)) +
  geom_point() +
  facet_wrap(~ cyl)

mean_wt <- data.frame(cyl = c(4, 6, 8), wt = c(2.28, 3.11, 4.00))
p + geom_hline(aes(yintercept = wt), mean_wt)


# You can also control other aesthetics
ggplot(mtcars, aes(mpg, wt, colour = wt)) +
  geom_point() +
  geom_hline(aes(yintercept = wt, colour = wt), mean_wt) +
  facet_wrap(~ cyl)

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Reference lines: horizontal, vertical, and diagonal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。