我想设置ggplot的max y值,同时保持默认的min y值,但我需要使用coord_cartesian
,因为我想放大,不排除任何数据的计算。
我很惊讶我找不到答案。有许多问题可以回答如何使用scale_._..
设置expand limits to a certain value或set 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))
返回错误。
有没有简单的替代品?
我也可以根据图的最小值的数据进行计算,但如果我对图或类似的图进行分面,这可能会变得复杂。
1条答案
按热度按时间7vux5j2d1#
此问题已于2020年3月5日在ggplot 2 3.3.0中修复。
现在
coord_cartesian(ylim = c(NA, 4))
运行没有错误。示例
下面是NEWS文件中的功能描述(“新功能”下的项目符号2)。
xlim
和ylim
参数的coord_*()
函数现在都接受带有NA
的向量作为最小值或最大值的占位符(例如,ylim = c(0, NA)
将y轴从0缩放到数据中观察到的最大值)。这模仿了连续尺度函数中limits
参数的行为(@paleolimbot,#2907)。