ggplot scale_continuous如何扩展参数?

时间:2017-05-25 01:25:03

标签: r ggplot2 tidyverse

我试图找出scale_continuous() expand参数的工作原理。根据{{​​3}}:

  

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

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

2 个答案:

答案 0 :(得分:18)

该文件非常清楚。如果您手动设置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的答案。

答案 1 :(得分:12)

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,则刻度的下限和上限均会向外扩大。如果长度为2,则下限为   由mult 1扩展,由mult [2]扩展上限。   添加

     加法范围扩展常数的

向量。如果长度为1,则通过添加单位向外扩展刻度的上下限。如果长度为2,则下限由add 1扩展,上限由add [2]扩展。

Generate expansion vector for scales