【问题标题】:How does ggplot scale_continuous expand argument work?ggplot scale_continuous expand 参数如何工作?
【发布时间】:2017-10-25 12:50:50
【问题描述】:

我试图弄清楚 scale_continuous() expand 参数是如何工作的。根据scale_continuous documentation

长度为 2 的数值向量,给出乘法和加法 膨胀常数。这些常量确保数据被放置 离轴有一段距离。默认值为 c(0.05, 0) 连续变量,c(0, 0.6) 用于离散变量。

由于它们是“扩展常数”,它们不是实际单位。有没有办法将它们转换为一些实际测量来预测实际输出?对于除 0 以外的任何东西,我都会尝试随机数,直到它起作用。必须有更合适的方法来解决这个问题。

【问题讨论】:

  • 不确定“实际单位”是什么意思:像素、毫米expand 不是这样运作的。它只是试图根据您的数据范围提供一点填充。

标签: r ggplot2 tidyverse


【解决方案1】:

文件很清楚。如果手动设置limits,会更清晰。我将举一些例子来说明它是如何工作的:

第一个参数给出的扩展等于它乘以限制范围;

ggplot(mpg, aes(displ, hwy)) +
    geom_point() +
    scale_x_continuous(limits = c(1, 7), expand = c(0.5, 0))
# right most position will be 7 + (7-1) * 0.5 = 10

第二个给出添加到轴两端的绝对扩展:

ggplot(mpg, aes(displ, hwy)) +
    geom_point() +
    scale_x_continuous(limits = c(1, 7), expand = c(0.5, 2))
# right most position will be 7 + (7-1) * 0.5  + 2 = 12

最后,同样的扩展适用于轴的两端。


2019-01-23:我从@C.Liu 的回答中了解到,新的expand_scale 函数可以用来实现不同下限和上限的扩展。 multiadd 参数类似于 expand = 所需的两个值,但允许使用长度为 2 的向量来设置下限和上限。详见 C.liu 的回答。

2020-11-25:expand_scale() 至少从版本 3.3.2 起已弃用,请改用 expansion()。这只是名称更改。 expansion的参数名称和含义与expand_scale保持一致。

【讨论】:

  • 这样就清楚多了。有没有办法仅将其应用于右侧或左侧,或者更复杂?
  • @burger,据我所知,没有这样的选择。但是您可以通过手动设置limits 来解决问题,如果需要,还可以选择将expand 设置为c(0, 0)
  • 感谢您的意见。我没有恒定的limits,所以我希望动态地做到这一点。很高兴知道这不是微不足道的。
  • 有没有办法只在轴的一端应用扩展?
  • @DanChaltiel,现在可以使用expand_scale,查看@C.Liu 的答案。
【解决方案2】:

expand_scale 可以选择仅微调轴的一端。

ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_x_continuous(limits = c(1, 7), 
                   expand = expand_scale(mult = c(0, 0.5), 
                                         add = c(2, 0))
# left most position will be 1 - (7-1) * 0.0  -2 = -1, 
# right most position will be 7 + (7-1) * 0.5 = 10

这是一个方便的函数,用于为 scale__continuous 和 scale__discrete 的 expand 参数生成比例扩展向量。扩展向量用于在数据和轴之间添加一些空间。

expand_scale(mult = 0, add = 0)

参数 多

乘法范围扩展因子的向量。如果长度为 1,则刻度的下限和上限都向外扩展 mult。如果长度为 2,则下限为 由 mult1 扩展,上限由 mult[2] 扩展。 添加

附加范围扩展常数向量。如果长度为 1,则刻度的下限和上限都通过添加单位向外扩展。如果长度为2,则下限扩展add1,上限扩展add[2]。

Generate expansion vector for scales

【讨论】:

  • 不错的选择!
  • expand_scale() 已弃用;请改用expansion()
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 2013-07-20
  • 2016-12-26
  • 2023-04-08
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多