gpt4 book ai didi

r - ggplot 如何计算其默认中断?

转载 作者:行者123 更新时间:2023-12-03 04:18:57 25 4
gpt4 key购买 nike

标题相对来说是不言自明的。我想知道 ggplot 如何决定其默认中断(以及标签)。

从下面的代码来看,每个几何对象的方法都是相同的:

library(ggplot2)

ggplot(data=mtcars,mapping=aes(x=carb,y=hp,fill=as.factor(gear)))+
geom_bar(stat="identity",position="dodge")

ggplot(data=mtcars,mapping=aes(x=carb,y=hp,fill=as.factor(gear)))+
geom_point()

任何帮助将不胜感激

最佳答案

我自己也有同样的问题,Google 给我带来了这个 SO 问题,所以我想我应该做一些挖掘。

假设我们绘制

library(ggplot2)
ggplot(mtcars, aes(x = cyl, y = mpg, size = hp)) +
geom_point()

它给了我们下面的图,我们希望知道 mpg (10, 15, ..., 35), cyl (4, 5, ..., 8) 和 hp (100, 150, ..., 300) 已导出。

enter image description here

重点关注 mpg,我们检查 scale_y_continuous 的代码,发现它调用了 continuous_scale。然后,调用 ?continuous_scale 我们看到,在 trans 参数的描述下,

A transformation object bundles together a transform, it's inverse, and methods for generating breaks and labels.

然后,查找 ?scales::trans_new,我们看到 breaks 参数的默认值为 extended_breaks()。顺着线索,我们发现 scales::extended_breaks 调用了 labeling::extended(rng[1], rng[2], n, only.loose = FALSE, ...)。将其应用到我们的数据中,

with(mtcars, labeling::extended(range(mpg)[1], range(mpg)[2], m = 5))
# [1] 10 15 20 25 30 35

这就是我们在图中观察到的。这就提出了一个问题,为什么尽管

with(mtcars, labeling::extended(range(hp)[1], range(hp)[2], m = 5))
# [1] 50 100 150 200 250 300 350

我们在图例中没有观察到 50 和 350。我的理解是答案与 https://stackoverflow.com/a/13888731/6455166 有关.

关于r - ggplot 如何计算其默认中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38486102/

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