R ggplot设置ymax但不设置ymin而不切割数据

Sar*_*rah 5 plot r ggplot2

我想设置 ggplot 的最大 y 值,同时保留默认的最小 y 值,但我需要使用,coord_cartesian因为我想放大,而不是从计算中排除任何数据。

我很惊讶我找不到这个问题的答案。有很多问题回答如何将限制扩展到某一特定值或仅使用设置一个限制scale_._..,但我找不到任何使用coord_cartesian来仅设置一个限制

例如; 使用以下示例图?coord_cartesian

library(ggplot2)
p <- ggplot(mtcars, aes(disp, wt)) +
  geom_point() +
  geom_smooth()
Run Code Online (Sandbox Code Playgroud)

我想要相当于

p + coord_cartesian(ylim = c(1.5, 4))
Run Code Online (Sandbox Code Playgroud)

无需将 1.5 设置为最小值。

如果我可以使用scale_y_continuous我可以使用

p + scale_y_continuous(limits = c(NA, 4))
Run Code Online (Sandbox Code Playgroud)

但这将有助于平滑的所有数据限制为小于 4 的值,这是我不想要的,并且等效的p + coord_cartesian(ylim = c(NA, 4))返回错误。

有简单的替代方法吗?

我还可以根据绘图的最小值数据进行计算,但如果我对绘图或类似内容进行刻面,这可能会变得复杂。

Joh*_*rud 0

此问题已于 2020 年 3 月 5 日在 ggplot2 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))
Run Code Online (Sandbox Code Playgroud)

以下是NEWS 文件中该功能的描述(“新功能”下的第 2 条)。

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