R ggplot设置了ymax,但未设置ymin,无切割数据

pn9klfpd  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(72)

我想设置ggplot的max y值,同时保持默认的min y值,但我需要使用coord_cartesian,因为我想放大,不排除任何数据的计算。
我很惊讶我找不到答案。有许多问题可以回答如何使用scale_._..设置expand limits to a certain valueset only one limit,但我找不到任何使用coord_cartesian设置仅一个限制的问题
比如说;使用?coord_cartesian的示例图:

library(ggplot2)
p <- ggplot(mtcars, aes(disp, wt)) +
  geom_point() +
  geom_smooth()

我想要相当于

p + coord_cartesian(ylim = c(1.5, 4))

而不必将1.5设置为最小值。
如果可以使用scale_y_continuous,则可以使用

p + scale_y_continuous(limits = c(NA, 4))

但是这限制了所有对我的平滑有贡献的数据的值小于4,这是我不想要的,并且等效的p + coord_cartesian(ylim = c(NA, 4))返回错误。
有没有简单的替代品?
我也可以根据图的最小值的数据进行计算,但如果我对图或类似的图进行分面,这可能会变得复杂。

7vux5j2d

7vux5j2d1#

此问题已于2020年3月5日在ggplot 2 3.3.0中修复。
现在coord_cartesian(ylim = c(NA, 4))运行没有错误。

示例

library(ggplot2)
p <- ggplot(mtcars, aes(disp, wt)) +
  geom_point() +
  geom_smooth() + 
  coord_cartesian(ylim = c(NA, 4))

下面是NEWS文件中的功能描述(“新功能”下的项目符号2)。

  • 所有带有xlimylim参数的coord_*()函数现在都接受带有NA的向量作为最小值或最大值的占位符(例如,ylim = c(0, NA)将y轴从0缩放到数据中观察到的最大值)。这模仿了连续尺度函数中limits参数的行为(@paleolimbot,#2907)。

相关问题