ggplot set ylim min OR max

时间:2017-12-23 03:20:54

标签: r ggplot2

我正在尝试绘制一个图表,我可以指定y轴的最小值或最大值。但我得到Error in if (zero_range(range)) { : missing value where TRUE/FALSE needed

来自documentation

  

您可以将一个值保留为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))

如果我删除ylim或将NA更改为数值,则效果很好。我在这里缺少什么?

1 个答案:

答案 0 :(得分:8)

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

names(df) <- c("AAPL", "TMUS", "AKAM", "INTC", "DE")
for (n in names(df)) {
    code <- paste0("lm_", n , " <- lm(", n, " ~ ., data=df)")
    eval(parse(text=code))
}

对于您的示例,它将是:

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  expand_limits(y=c(NA, 50))

您甚至可以提供单一价值。如果该值大于数据的最大值,则会扩展最大值。如果低于数据的最小值,它将扩展最小值。在您的示例中:

plot + expand_limits(y=c(NA, 100))

以下是两个可重复的例子:

plot + expand_limits(y=100)

enter image description here