4

ggplot2 を使用して、 arcdiagramパッケージに似たアーク プロットを作成しようとしていgeom_curveます。

library(ggplot2)

ggplot(myDat, aes(x = A, xend = B, y = 0, yend = 0)) +
  geom_curve(alpha = 0.2, curvature = 1, ncp = 1000, lineend = 'butt')

ここに画像の説明を入力

一部の曲線が 0 を下回っていますが、それらすべてを Y = 0 を上回るようにするにはどうすればよいですか?

データ:

myDat <- 
  structure(list(A = c(36047276L, 36074979L, 36074979L, 36074979L, 
                       36074979L, 36074979L, 36074979L, 36074979L, 36074979L, 36074979L, 
                       36074979L, 36077099L, 36077099L, 36077099L, 36077099L, 36077099L, 
                       36077099L, 36077099L, 36077099L, 36098040L, 36098040L, 36098040L, 
                       36098040L, 36098040L, 36098040L, 36098040L, 36098040L, 36098040L, 
                       36098040L, 36098040L, 36098040L, 36098040L, 36098040L, 36098040L, 
                       36098040L, 36098040L, 36099840L, 36099840L, 36099840L, 36099840L, 
                       36099840L, 36099840L, 36099840L, 36099840L, 36099840L, 36099840L, 
                       36099840L, 36099840L, 36099840L, 36099840L, 36099840L, 36099840L, 
                       36099840L, 36101586L, 36101586L, 36101586L, 36101586L, 36101586L, 
                       36101586L, 36101586L, 36101586L, 36101586L, 36101586L, 36101586L, 
                       36101586L, 36101586L, 36101586L, 36101586L, 36101586L, 36101586L, 
                       36103565L, 36103565L, 36103565L, 36103565L, 36103565L, 36103565L, 
                       36103565L, 36103565L, 36103565L, 36103565L, 36103565L, 36103565L, 
                       36103565L, 36103565L, 36103565L, 36103565L, 36103565L),
                 B = c(36047417L, 
                       36077099L, 36077279L, 36077863L, 36078510L, 36079111L, 36079565L, 
                       36080165L, 36080428L, 36082473L, 36082907L, 36074979L, 36077279L, 
                       36077863L, 36078510L, 36079111L, 36079565L, 36080165L, 36082907L, 
                       36096300L, 36097775L, 36098987L, 36099840L, 36099952L, 36100767L, 
                       36101156L, 36101586L, 36101633L, 36101926L, 36102035L, 36102381L, 
                       36102833L, 36103149L, 36103565L, 36103872L, 36104121L, 36096300L, 
                       36097775L, 36098040L, 36098987L, 36099952L, 36100767L, 36101156L, 
                       36101586L, 36101633L, 36101926L, 36102035L, 36102381L, 36102833L, 
                       36103149L, 36103565L, 36103872L, 36104121L, 36096300L, 36097775L, 
                       36098040L, 36098987L, 36099840L, 36099952L, 36100767L, 36101156L, 
                       36101633L, 36101926L, 36102035L, 36102381L, 36102833L, 36103149L, 
                       36103565L, 36103872L, 36104121L, 36096300L, 36097775L, 36098040L, 
                       36098987L, 36099840L, 36099952L, 36100767L, 36101156L, 36101586L, 
                       36101633L, 36101926L, 36102035L, 36102381L, 36102833L, 36103149L, 
                       36103872L, 36104121L)), .Names = c("A", "B"),
            class = "data.frame", row.names = c(NA, -87L))
4

1 に答える 1

4

曲線に基づいてcurvature、左または右に曲がります。これは、この場合、曲線が A から B に描かれ、曲率が 1 の場合、右側に曲がることを意味します。したがって、A が B より小さい場合、曲線は「負」(y 軸の下) になり、A が B より大きい場合は正になります。

すべての曲線を同じ側に配置する 1 つgeom_curveの方法は、状況ごとに 1 つずつ、2 つの を使用することです。

ggplot(mapping = aes(x = A, xend = B, y = 0, yend = 0)) +
  geom_curve(data = subset(myDat, A > B),
             alpha = 0.2, curvature = 1, ncp = 1000, lineend = 'butt') +
  geom_curve(data = subset(myDat, A < B),
             alpha = 0.2, curvature = -1, ncp = 1000, lineend = 'butt')

または、ペアが間違った方向に配置されている場合は、ペアを入れ替えることができます。

myDat2 <- myDat
myDat2$A <- pmax(myDat$A, myDat$B) 
myDat2$B <- pmin(myDat$A, myDat$B)

ggplot(myDat2, aes(x = A, xend = B, y = 0, yend = 0)) +
  geom_curve(alpha = 0.2, curvature = 1, ncp = 1000, lineend = 'butt')

どちらも次のようになります。

ここに画像の説明を入力

于 2016-10-14T09:51:09.767 に答える