【问题标题】:Plotting Line Segments from Coordinates从坐标绘制线段
【发布时间】:2019-10-30 05:49:14
【问题描述】:

我想绘制线段。每条线都有一个起点 (x1/y1) 和终点 (x2/y2)。我正在关注这个Answer,但它不起作用。我只是得到一个空的情节:

这里是我使用的命令:

data <- matrix(1:12, ncol = 4, dimnames = list(c("a","b","c"), c("x1","y1","x2","y2")))
plot(NA, xlim=c(0,15), ylim=c(0,15), xlab="x", ylab="y")
segments(data["x1"], data["y1"], data["x2"], data["y2"])

data 给出:

  x1 y1 x2 y2
a  1  4  7 10
b  2  5  8 11
c  3  6  9 12

稍后我计划从文本文件 (csv) 加载数据。但是对于第一个测试,我只是使用这个生成的无意义的数字。

由于我没有收到错误消息,因此我被困在这里。我犯了哪些基本错误?感谢您的帮助。

我用:

R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Platform: x86_64-pc-linux-gnu (64-bit)

【问题讨论】:

  • 它是基础R矩阵,所以你需要做segments(data[,"x1"], data[,"y1"], data[,"x2"], data[,"y2 "])
  • 这只画了一条线(而不是全部)。是不是我不应该使用矩阵作为坐标?
  • hmmm... 还是所有行都在同一行上重叠?天哪,让我检查一下:-)
  • 我将1:12 替换为其他数字,例如c(1,1,5,5,6,6,12,12,8,8,3,3)matrix 函数中。现在效果很好。仅从 1 数到 12 来获取测试数据并不是一个好主意。
  • 分段功能一切顺利吗?

标签: r


【解决方案1】:

正如 StupidWolf 在 cmets 中所说,矩阵缺少逗号。正确的是:

segments(data[,"x1"], data[,"y1"], data[,"x2"], data[,"y2"]) 

但是:您可以将csv 数据直接加载到数据框中,然后绘制它。不需要矩阵。

一个名为data.csv的文件中的样本数据:

x1,y1,x2,y2
1,1,5,7
6,4,12,10
8,2,3,9

命令:

data=read.csv("data.csv", sep=",")
plot(NA, xlim=c(0,15), ylim=c(0,15), xlab="x", ylab="y")
segments(data$x1, data$y1, data$x2, data$y2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多