ggplot set ylim min OR max

Wis*_*tar 4 r ggplot2

我试图制作一个情节,我可以指定y轴的最小值或最大值.但我明白了Error in if (zero_range(range)) { : missing value where TRUE/FALSE needed

文档:

您可以将一个值保留为NA,以便根据数据范围进行计算.

因此,我做了:

#Getting some data in
plot <- ggplot(mydata, 
               aes_string(y="yvar", x="xvar", colour="group", group="group", fill="group")
              )
#Adding some error bars
plot <- plot + geom_errorbar(aes(ymax=agg+var, ymin=agg-var), size=0.5, colour="black", data=mydata)

plot <- plot + geom_point(size=4) 
plot <- plot + geom_line(size=1)

#Here is when I just want to set y max
plot <- plot + coord_cartesian(ylim= c(NA, 100))
Run Code Online (Sandbox Code Playgroud)

如果我删除ylim或更改NA为数值,它运行良好.我在这里错过了什么?

eip*_*i10 7

您可以使用展开限制仅在一个方向上扩展轴.例如:

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  expand_limits(y=c(NA, 50))
Run Code Online (Sandbox Code Playgroud)

对于你的例子,它将是:

plot + expand_limits(y=c(NA, 100))
Run Code Online (Sandbox Code Playgroud)

您甚至可以提供单个值.如果该值大于数据的最大值,则会扩展最大值.如果低于数据的最小值,它将扩展最小值.在你的例子中:

plot + expand_limits(y=100)
Run Code Online (Sandbox Code Playgroud)

这里有两个可重复的例子:

p = ggplot(mtcars, aes(wt, mpg)) +
  geom_point()

p + expand_limits(y=-20)
p + expand_limits(y=200)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述