标题相对自我解释.我想知道ggplot如何决定它的默认中断(以及标签).
从下面的代码看,每个geom的方法看起来都是一样的:
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()
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
我本人也有同样的问题,谷歌将我带到这个SO问题,所以我认为我会做一些探讨。
假设我们绘图
library(ggplot2)
ggplot(mtcars, aes(x = cyl, y = mpg, size = hp)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
这给出了下面的图,我们希望知道mpg(10,15,...,35),cyl(4,5,...,8)和hp(100,150,..., 300)。
mpg我们专注于检查代码,scale_y_continuous并查看其调用continuous_scale。然后,调出?continuous_scale我们在trans参数说明下看到的是
转换对象将转换,逆转换以及生成中断和标签的方法捆绑在一起。
然后,向上看?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
Run Code Online (Sandbox Code Playgroud)
这就是我们在情节中观察到的。这就提出了一个问题,尽管
with(mtcars, labeling::extended(range(hp)[1], range(hp)[2], m = 5))
# [1] 50 100 150 200 250 300 350
Run Code Online (Sandbox Code Playgroud)
我们在图例中没有观察到50和350。我的理解是,答案与/sf/answers/972211201/有关。