首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用segments() R循环points()

使用segments() R循环points()
EN

Stack Overflow用户
提问于 2018-07-26 18:24:56
回答 2查看 208关注 0票数 1

我用笛卡尔坐标系中的线段将点连接起来。我坚持将点循环到线段,这样,如果我想更改点和线段的坐标,就不必每次都输入点和线段的坐标。在这里,一个for循环可能会有所帮助。

代码语言:javascript
复制
x <- -10:10
y <- -10:10

plot(x, y, type = "n", xlab = NA, ylab = NA, axes = FALSE);

axis(1, pos = 0, at = seq(-10, 10, by = 1), las=1, cex.axis=0.5)
axis(2, pos = 0, at = seq(-10, 10, by = 1), las=2, cex.axis=0.5)

points(2,1, col = "blue", pch = 20)
points(5,7, col = "blue", pch = 20)
points(-3,8, col = "green", pch = 20)
points(8,3, col = "green", pch = 20)

segments(2, 1, 5 , 7)
segments(-3, 8, 8, 3)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-26 18:42:34

您正在重复绘制点并绘制连接这些点的线段的代码。在这些情况下,最好编写一个函数并在需要的时候调用它。

请注意,函数参数pcol代表point colorscol代表segment color

代码语言:javascript
复制
connectPoints <- function(x, y, pcol, pch = 20, scol = "black"){
  points(x[1], x[2], col = pcol, pch = pch)
  points(y[1], y[2], col = pcol, pch = pch)
  segments(x[1], x[2], y[1], y[2], col = scol)
}

plot(x, y, type = "n", xlab = NA, ylab = NA, axes = FALSE);

axis(1, pos = 0, at = seq(-10, 10, by = 1), las=1, cex.axis=0.5)
axis(2, pos = 0, at = seq(-10, 10, by = 1), las=2, cex.axis=0.5)

x1 <- c(2, 1)
y1 <- c(5, 7)
x2 <- c(-3, 8)
y2 <- c(8, 3)

connectPoints(x1, y1, pcol = "blue")
connectPoints(x2, y2, pcol = "green")

票数 1
EN

Stack Overflow用户

发布于 2018-07-26 19:36:36

使用函数分割所需的任何点:

代码语言:javascript
复制
myplot<-function(x1=sample(20),y1=sample(20),axis_range=20){
  x <- -axis_range:axis_range
  y <- -axis_range:axis_range

  plot(x, y, type = "n", xlab = NA, ylab = NA, axes = FALSE);

  axis(1, pos = 0, at = seq(-axis_range, axis_range, by = 1), las=1, cex.axis=0.5)
  axis(2, pos = 0, at = seq(-axis_range, axis_range, by = 1), las=2, cex.axis=0.5)
  cols<-sample(colors(),ceiling(length(x1)/2))
  for (i in 1:length(x1)) {
    points(x1[i],y1[i],col = cols[ceiling (i/2)], pch = 20)

  }
  for (j in 1:floor((length(x1)/2))) {
    segments(x1[(2*(j-1))+1],y1[(2*(j-1))+1],x1[2*j],y1[2*j])
  }

}
myplot(x1=sample(20),y1=sample(20),axis_range=20)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51536607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档