我试图制作一个情节,我可以指定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
为数值,它运行良好.我在这里错过了什么?
您可以使用展开限制仅在一个方向上扩展轴.例如:
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)