gpt4 book ai didi

r - 如何扩展 ggplot y 轴限制以包括最大值

转载 作者:行者123 更新时间:2023-12-03 19:45:33 25 4
gpt4 key购买 nike

通常在绘图中,Y 轴值标签在绘制的最大值以下被切断。

For example:

library(tidyverse)
mtcars %>% ggplot(aes(x=mpg, y = hp))+geom_point()

我知道 scale_y_continous - 但我想不出一个聪明的方法来做到这一点。也许我只是想多了。我不想弄乱自动生成的“智能”中断。

我可能会尝试手动解决这个问题......
  mtcars  %>% ggplot(aes(x=mpg, y=hp, color=as.factor(carb)))+geom_point()  + scale_y_continuous(limits = c(0,375))

enter image description here

但这不像我上面提到的那样工作,因为“智能休息”。无论如何,我是否可以将默认中断间隔延长到 1 个以上,以便在这种情况下为 400?当然,我希望这对于我正在使用的任何数据集都是灵活的。

最佳答案

您可以使用 expand_limits()以增加最大 y 轴值。您还可以确保将最大 y 轴值向上舍入到数据尺度上的下一个最高值,例如下一个最高的十位值、下一个最高的百位值等,具体取决于数据在几十、几百等范围内。

例如,下面的函数查找最大 y 值的以 10 为底的对数并将其四舍五入。这为我们提供了最大 y 值的十进制刻度(例如,数十、数百、数千等)。然后将最大 y 轴值向上舍入到最接近的十、百等,即高于最大 y 值。

expandy = function(vec, ymin=NULL) {

max.val = max(vec, na.rm=TRUE)
min.log = floor(log10(max.val))

expand_limits(y=c(ymin, ceiling(max.val/10^min.log)*10^min.log))
}

p = mtcars %>% ggplot(aes(x=mpg, y = hp)) +
geom_point()

p + expandy(mtcars$hp)

p + expandy(mtcars$hp, 0)

或者,为了让事情更简单,您可以设置函数,以便直接从图中收集 y 范围数据:
library(gridExtra)

expandy = function(plot, ymin=0) {

max.y = max(layer_data(plot)$y, na.rm=TRUE)
min.log = floor(log10(max.y))

expand_limits(y=c(ymin, ceiling(max.y/10^min.log)*10^min.log))
}

p = mtcars %>% ggplot(aes(x=mpg, y = hp)) +
geom_point()

grid.arrange(p, p + expandy(p), ncol=2)

enter image description here
p = iris %>% ggplot(aes(x=Sepal.Width, y=Petal.Width)) +
geom_point()

grid.arrange(p, p + expandy(p), ncol=2)

enter image description here

关于r - 如何扩展 ggplot y 轴限制以包括最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53532217/

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