【问题标题】:I need x on x axis y on y axis and fx and fy in plot area in R我需要 x 轴上的 x y 轴上的 x 和 R 绘图区域中的 fx 和 fy
【发布时间】:2017-11-02 03:16:17
【问题描述】:

我需要这种类型的图:

我需要 x 轴上的 x,y 轴上的 y 和策略区域中的 fx 和 fy。你能在 R 中帮助我吗,即两条曲线彼此相交。我的代码是

   gx <- expand.grid(x=seq(1,5,length=50))
   fx <- function(x) { exp(-x) }
   gx$fx <- apply(gx,1,fx)
   plot(gx, type="l",col="red")

   gy <- expand.grid(y=seq(1,5,length=50))
   fy <- function(y) { y*exp(-y) }
   gy$fy <- apply(gy, 1, fy)
   par(new=TRUE)
   plot(gy, type="l", col="green")

【问题讨论】:

  • 如果你问的是 x,y-labels,那么请说出来。如果您发布当前情节的图像并解释您期望看到的不同内容,将会有所帮助。 “fx,fy 在地块区域”?您想在地块区域的相应点上看到显示 fx、fy 数值的文本吗?
  • 将最后一行更改为lines(gy, col="green")。这会将其添加到上一个绘图中。
  • 感谢您的回复 Andrew Gustar。我需要 x, fx 根据 x 轴和 y, fy 根据 y 轴在单个图中。
  • 请检查f(x)的函数。它绝对没有给你你需要的计算。

标签: r plot labels axis-labels


【解决方案1】:

不是 100% 确定我理解这个问题的含义,但如果您要标记轴,可以使用 xlab 和 ylab 图形参数:

即:

plot(gx, type="l",col="red", xlab="label for x axis", ylab="label for y axis")

【讨论】:

    【解决方案2】:

    这是有底的情节:

    plot(gx, type="n", xlab="", ylab="")
    for(i in 1:2) lines(get(c("gx", "gy")[i]), col=c("red", "green")[i])
    title(xlab="x", ylab="y")
    

    我个人更喜欢使用“dplyr”和“tidyr”包将两个数据(gxgy)合并到一个长格式的单个 data.frame 中:

    p>
    dat <- data.frame(gx, gy)
    dat <- dat %>% 
          gather(xvar, x, x,y) %>% 
          gather(yvar, y, fx, fy)
    head(dat)
    
    #   xvar        x yvar         y
    # 1    x 1.000000   fx 0.3678794
    # 2    x 1.081633   fx 0.3390415
    # 3    x 1.163265   fx 0.3124642
    # 4    x 1.244898   fx 0.2879703
    # 5    x 1.326531   fx 0.2653964
    # 6    x 1.408163   fx 0.2445921
    

    这将使使用 ggplot 可视化变得容易:

    ggplot(dat, aes(x,y, col=yvar)) + geom_line()
    

    【讨论】:

      【解决方案3】:

      legendlines 函数与plot 一起使用会得到下图。

      plot(gx,type="l",col="red", xlab ="x", ylab="y")
      lines(gy,col="green")
      legend("topright", inset=.05, cex = 1, c("f(x)","f(y)"), horiz=TRUE, lty=c(1,1), lwd=c(2,2), col=c("red","green"), text.font=3)
      

      【讨论】:

        【解决方案4】:

        到目前为止,似乎没有人回答关于将 f(x) 和 f(y) 放在情节区域中的问题。您可以使用text() 执行此操作,但这不是最优雅的解决方案,因为您必须手动指定放置文本的坐标。

        您提供的数据:

        gx <- expand.grid(x=seq(1,5,length=50))
        fx <- function(x) { exp(-x) }
        gx$fx <- apply(gx,1,fx)
        
        gy <- expand.grid(y=seq(1,5,length=50))
        fy <- function(y) { y*exp(-y) }
        gy$fy <- apply(gy, 1, fy)
        

        创建情节:

        plot(gx,type="l",col="red", xlab ="x", ylab="y")
        lines(gy,col="green")
        text(x=c(3,2),y=c(0.18,0.1), labels=c("f(y)","f(x)"))
        

        给出这个:

        我希望这会有所帮助!您的问题令人困惑的部分是当您说您需要线条相交时。这是您的数据和/或您正在应用的函数的问题,我们无法在不明确的情况下回答。

        【讨论】:

          猜你喜欢
          • 2021-12-02
          • 2012-06-08
          • 2018-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多