切断されたラインをggplotにプロットします[重複]

Jan 14 2021

ggplotを使用して線が切断されたグラフを作成したい

# Sample data
x <- seq(1:100)
y <- c(rnorm(25, mean = 1, sd = 1), rnorm(25, mean = 2, sd = 1), rnorm(25, mean = 3, sd = 1), rnorm(25, mean = 4, sd = 1))
z <- rep(1:4, each = 25)
tempdf <- data.frame(cbind(x,y,z))

コードの使用

ggplot(data=tempdf, aes(x = x)) +
    geom_line(aes(y = y), color = "blue") + 
    geom_line(aes(y = z), color = "red", size = 1)

私はこの出力を取得します

しかし、私は次のようなものを作成したいと思います(赤い線が段階的に接続されていないことに注意してください)

使ってみましgeom_segmentたが、正しい方法がわかりませんでした

ggplot(data=tempdf, aes(x = x)) +
    geom_line(aes(y = y), color = "blue") + 
    geom_segment(x = x, y = z, xend = x+25, yend = z)

これを与える

回答

2 GregorThomas Jan 14 2021 at 06:02

group美学を使用して、接続されている行を定義します。

ggplot(data=tempdf, aes(x = x)) +
    geom_line(aes(y = y), color = "blue") + 
    geom_line(aes(y = z, group = z), color = "red", size = 1)

(これgroup = zは、同じz値を持ち、z値が一意である場合に線を接続する必要があるため、サンプルデータで簡単に機能します。より堅牢な方法では、この目的で列を追加します。)