gpt4 book ai didi

r - 在R中绘制线段

转载 作者:行者123 更新时间:2023-12-04 11:55:26 27 4
gpt4 key购买 nike

我有一些 x 和 y 坐标,我试图将它们绘制成线段。而且我从我认为应该起作用的东西中得到了一些意想不到的行为。

对于每个段,都有一组起始坐标 (x1,y1) 和一组结束坐标 (x2,y2)。这是一个如下所示的数据框(称为“df”):

  x1   y1   x2   y2
34.9 67.9 62.5 68.8
66.8 80.9 58.8 88.4
58.8 88.4 66.0 68.4
64.0 65.8 56.2 62.6
56.2 62.6 56.6 75.3
54.5 70.0 72.9 51.3

段不一定是连续的。我的意思是有时一个段的结束 x,y 是下一个段的起点;其他时候不是。

所以我尝试绘制它们

lines(c(df$x1, df$x2), c(df$y1, df$y2))

我得到了以下内容,这根本不是我想要的。有额外的线段被绘制出来,它们都连接起来了。这是错误的。看起来它正在从 6 组起点/终点绘制 11 或 12 段。

bad plot

现在,我可以一步一步地绘制它们:

lines(c(df$x1[1], df$x2[1]), c(df$y1[1], df$y2[1]))
lines(c(df$x1[2], df$x2[2]), c(df$y1[2], df$y2[2]))
lines(c(df$x1[3], df$x2[3]), c(df$y1[3], df$y2[3]))
Etc.

我得到了下面的情节,这就是我所追求的。 good lines那么有人可以帮助解释第一次发生的事情与第二次不同吗?有没有一种方法可以在一行中完成所有这些操作,而无需单步执行或编写循环的函数?

最佳答案

segments 函数正是您要寻找的:

> data
x1 y1 x2 y2
1 34.9 67.9 62.5 68.8
2 66.8 80.9 58.8 88.4
3 58.8 88.4 66.0 68.4
4 64.0 65.8 56.2 62.6
5 56.2 62.6 56.6 75.3
6 54.5 70.0 72.9 51.3
> plot(range(data$x1,data$x2), range(data$y1, data$y2),type="n")
> segments(data$x1, data$y1, data$x2, data$y2)

请注意,您必须先设置情节。您可能想要这样做:

> plot(NA, xlim=c(0,100), ylim=c(0,100), xlab="x", ylab="y")
> segments(data$x1, data$y1, data$x2, data$y2)

获取图形的边界。

segments

关于r - 在R中绘制线段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27192929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com