2017-03-15 7 views
2

Rの中にいくつかの関数をプロットしています。それらのうちのいくつかは連続的ではなく、異なる曲線成分の間に垂直線があります。私は本当にこの垂直線を外に出す必要があります(それは関数をノーファンクションのように見せてくれるので、私はそれを望んでいません)。垂直ラインのないRの不連続関数のプロット

どうすればいいですか?今、私はxyという2つのベクトルを使用していて、plot(x,y,type = "l")を実行しているので、Rは不連続点がどこにあるのか分かりません。しかし、私はより良い方法を見つけることができませんでした。

+0

具体的なヘルプが必要な場合は、[より具体的で再現可能な例(ヒントについてはここをクリックしてください)](http://stackoverflow.com/q/5963269/903061)を提供する必要があります。 – Gregor

答えて

1

これは最適な解決策ではないかもしれませんが、機能の数が少ない場合は連続部分を残して分割することができ、最初はplotを使用し、もう1つをlinesで追加します。例えば:

x <- seq(1,3,1) 
    y <- sqrt(x) 
    x2 <- seq(3,6,1) 
    y2 <- runif(4) 

    plot(y ~ x, type = "l",col = 2 , ylim = c(0,2) , xlim = c(0,6)) 
    lines(y2 ~ x2, col = 2) 
+1

'points'の代わりに' lines'を使うと 'type =" l "引数をスキップできます。 – Gregor

1

あなたの質問から、私は(あなたがtype = 'l'を使用しているとして)

  • xが単調であることを推測することができ;
  • xの値が重複しているため、いくつかの縦線が表示されます。

私は私のコメントで述べたように、あなたのケース重複x値信号な休暇にしながら、簡単な解決策は、不連続点でパッドNAにあります。

したがって私は、次の再現例をシミュレート:

x <- c(1:3, 3:5, 5:7) 
y <- rep(1:3, each = 3) 
plot(x, y, type = 'l') 

溶液を

chunk <- cumsum(duplicated(x)) 
x0 <- split(x, chunk) 
y0 <- split(y, chunk) 
xp <- unlist(lapply(x0, c, NA), use.names = FALSE) 
yp <- unlist(lapply(y0, c, NA), use.names = FALSE) 
plot(xp, yp, type = 'l') 

注、

  • 上記cが連結機能cあります。
  • 他の回答に示されているように、連続チャンクを1つずつ生成している場合は、埋め込みNAはそれほど単純ではありません。
関連する問題