【问题标题】:How to highlight a point of interest when using manipulate()?使用操作()时如何突出显示兴趣点?
【发布时间】:2015-10-04 11:13:49
【问题描述】:

我正在尝试使用 R 生成的交互式绘图向我的学生展示改变上升和运行如何影响线的斜率。我基本上用下面的代码完成了这个,但我想找到一种方法来突出显示点 (x_1, y_1), (x_2, y_2) :

manipulate(
   plot(x<-seq(from = -3,
          to = 3, 
          by = .02), 
   y=(y_2-y_1/(x_2-x_1))*x, 
   type = "l", 
   ylim = c(-5,5), 
   panel.first = grid()), 
y_2=slider(min = -3, 3, initial = 1, step = .5),
y_1=slider(min = -3, 3, initial = 0, step = .5),
x_2=slider(min = -3, 3, initial = 1, step = .5),
x_1=slider(min = -3, 3, initial = 0, step = .5)
)

感谢您提供的任何帮助

【问题讨论】:

    标签: r plot interactive


    【解决方案1】:

    修改@bgolst 的答案有助于创建以下代码,它突出显示输入 (x_1, y_1), (x_2, y_2) 值,而不仅仅是端点。我非常感谢他或她的意见

    manipulate(
     {plot(x<-seq(from = -3,
              to = 3, 
              by = .02), 
       y=(y_2-y_1/(x_2-x_1))*x, 
       type = "l", 
       ylim = c(-5,5),
       panel.first = grid());
    col <- 'red';
    points(x_2,y = (y_2-y_1/(x_2-x_1))*x_2,pch=21,cex=1.5,col=col,bg=col);
    col <- 'blue';
    points(x = x_1,y = (y_2-y_1/(x_2-x_1))*x_1,pch=21,cex=1.5,col=col,bg=col);
    },
    y_2=slider(min = -3, 3, initial = 1, step = .5),
    y_1=slider(min = -3, 3, initial = 0, step = .5),
    x_2=slider(min = -3, 3, initial = 1, step = .5),
    x_1=slider(min = -3, 3, initial = 0, step = .5)
    )
    

    【讨论】:

      【解决方案2】:

      manipulate() 的第一个参数是一个表达式,每次更改参数时都会(重新)评估它。您可以将其作为一个支撑块来评估多个语句,这将允许在主要的plot() 调用之后绘制额外的点。我会这样做:

      library('manipulate');
      manipulate(
          {
              x <- seq(-3,3,.02);
              y <- y_2-y_1/(x_2-x_1)*x;
              plot(x,y,type='l',ylim=c(-5,5),panel.first=grid());
              col <- 'red';
              points(x[c(1,length(x))],y[c(1,length(y))],pch=21,cex=1.5,col=col,bg=col);
          },
          y_2=slider(-3,3,1,step=.5),
          y_1=slider(-3,3,0,step=.5),
          x_2=slider(-3,3,1,step=.5),
          x_1=slider(-3,3,0,step=.5)
      );
      

      (如果您有兴趣更深入地了解 R 语言中大括号的含义,请参阅我对 What is "{" class in R? 的回答。)

      【讨论】:

      • 谢谢您,您的解决方案运行良好,您对支撑块的讨论非常有用。
      猜你喜欢
      • 2011-04-06
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 2015-11-12
      • 2018-05-12
      • 1970-01-01
      相关资源
      最近更新 更多