R ggplot2 - 在一个具有不同x轴范围的图中绘制多个函数

时间:2016-07-17 22:07:22

标签: r plot ggplot2 limits

我想在一个图中绘制不同的数学函数,将它们中的一些限制在不同的x值范围内。代码是:

# Different functions
stereographic <- function(theta,f=1) {
  2*f*tan(theta/2.0)
}

equidistant <- function(theta,f=1) {
  f*theta
}

equisolidangle <- function(theta,f=1) {
  2*f*sin(theta/2.0)
}

orthographic <- function(theta,f=1) {
  f*sin(theta)
}

# Plot
p <- ggplot(data = data.frame(x = c(0,pi)), mapping = aes(x = x))

p <- p +
  stat_function(fun=stereographic,aes(colour="Stereografisch")) +
  stat_function(fun=equidistant,aes(colour="Äquidistant")) +
  stat_function(fun=equisolidangle,aes(colour="Flächentreu")) +
  ylim(0,3)
print(p)

现在我想在x轴范围[0,pi / 2]中添加另一个函数,但我找不到工作方法。我总是得到像ggplot2 doesn't know how to deal with data of class uneval这样的东西。是否可以将stat_function限制在新的x轴范围内,还是有另一种好的方法?

1 个答案:

答案 0 :(得分:2)

xlim中的

stat_function允许您设置绘制的x值范围:

new.func = function(theta,f=1) {
  f/sin(theta)
}

p + stat_function(fun=new.func, aes(colour="1/sin"), xlim=c(0,pi/2))

enter image description here