簡體   English   中英

在R中繪制線段

[英]Drawing line segments in R

我有一些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段。

糟糕的情節

現在,我可以一步一步地繪制它們:

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.

我得到了下面的情節,這就是我所追求的。 好線 那么有人可以幫助解釋它在第一個實例中發生的事情,使它與第二個實例不同嗎? 有沒有辦法在一行中完成所有操作而無需單步執行或編寫循環的函數?

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)

獲得你圖中的界限。

段

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM