gpt4 book ai didi

r - ggplot `expand_scale()` 轴 - 不一致

转载 作者:行者123 更新时间:2023-12-02 02:42:15 25 4
gpt4 key购买 nike

<小时/>

示例 1

library(tidyverse)
ggplot(mtcars) +
geom_bar(aes(x = factor(cyl))) +
scale_y_continuous(expand = expand_scale(mult = c(0, 0)))

1

我的问题似乎是 ggplot expand_scale() 的行为不一致。但这种说法可能是不正确的。让我们从上面的图作为基线开始深入研究。

<小时/>

示例 2

If I understand the argument correctly , mult = c(X, Y) 使我能够在图下方扩展 ggplot 比例 X%,在图上方扩展 Y%。这就是我通过下面的代码得到的结果。

ggplot(mtcars) +
geom_bar(aes(x = factor(cyl))) +
scale_y_continuous(expand = expand_scale(mult = c(1, 0)))

2

<小时/>

示例 3

ggplot(mpg %>% filter(displ > 6, displ < 8), aes(displ, cty)) + 
geom_point() +
facet_grid(vars(drv), vars(cyl)) +
geom_text(aes(label = trans)) +
scale_x_continuous(expand = c(0, 0)) +
coord_cartesian(clip = "off")

3

这是我想要为示例三和示例四处理的下一个基线。

<小时/>

示例 4

ggplot(mpg %>% filter(displ > 6, displ < 8), aes(displ, cty)) + 
geom_point() +
facet_grid(vars(drv), vars(cyl)) +
geom_text(aes(label = trans)) +
scale_x_continuous(expand = c(1, 0)) +
coord_cartesian(clip = "off")

4

使用与示例一相同的逻辑,我认为 mult = c(X, Y) 使我能够将 ggplot 比例 X% 扩展到图的左侧,将 Y% 扩展到图的左侧在情节的右侧。但是,我的 scale_x_continuous(expand = c(1, 0)) 似乎没有将比例 1 = 100% 扩展到图的左侧,并且 0 = 0% 位于绘图右侧。

这个 scale_x_continuous(expand = c(1, 0)) 相反,在图的左侧放置了一些额外的空间,在图的右侧放置了更多的额外空间?

发生了什么事?为什么?

<小时/>

最佳答案

这个:

expand = c(<some number>, <some number>)

与此相同:

expand = expand_scale(mult = c(<some number>, <some number>))

?expand_scale中,我们可以看到该函数的完整默认参数是这样的:

expand_scale(mult = 0, add = 0)

其中 multadd 的长度可以为 1(相同的值应用于下限/上限)或长度 2(第一个值应用于下限,第二个值应用于上限) )。

另一方面,expand = c(...) 形式可以接受长度为 2 或 4 的向量。如果它是长度为 2 的向量,则映射第一个值到 mult 并将第二个值添加到 add,因此 expand = c(1, 0) 相当于 expand = Expand_scale(mult = 1, add = 0),这会在下限和上限上添加 100% 扩展。如果它是长度为 4 的向量,则前两个值将映射到 mult 的下限,然后是 add,最后两个值将映射到各自的上限.

让我们使用相同的图来进行说明:

p <- ggplot(mpg %>% filter(displ > 6, displ < 8), aes(displ, cty)) + 
geom_point() +
facet_grid(vars(drv), vars(cyl)) +
geom_text(aes(label = trans)) +
coord_cartesian(clip = "off")

以下三种变体将产生相同的绘图:

p + scale_x_continuous(expand = expand_scale(mult = 1, add = 0))
p + scale_x_continuous(expand = expand_scale(mult = 1)) # add = 0 is the default anyway
p + scale_x_continuous(expand = c(1, 0))

以下两个变体也将产生相同的图。 (我在这里使用不同的扩展值进行说明,但一般来说,如果要指定 4 个不同的扩展值,则 expand_scale() 格式比在一个文件中列出所有四个值要明确得多。矢量...)

p + scale_x_continuous(expand = expand_scale(mult = c(1, 2), add = c(3, 4)))
p + scale_x_continuous(expand = c(1, 3, 2, 4)) # note the difference in order of values

关于r - ggplot `expand_scale()` 轴 - 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56222481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com