web-dev-qa-db-ja.com

2列のR凡例を作成するにはどうすればよいですか?

plot()関数によって生成される凡例をグラフに作成したいと思います。元のlegend()関数は、1列しかないリストを生成します。 2列の凡例を作成するにはどうすればよいですか?

Wanted legend

10
Felix Chan

標準プロットのlegendへの1回の呼び出しでそれを行う方法を見つけることができませんでした。

これがオプションで、2つの別々の凡例を描画します。1つは線と点、もう1つはラベルです。 x.interspは、ラベルと線の間の距離を微調整するために使用できます。

plot(cumsum(runif(n = 100)))

# draw legend with lines and point but without labels and box. x.intersp controls horizontal distance between lines
L = legend(x = 'bottom', legend = rep(NA,4), col=1:2, lty=c(1,1,2,2), ncol=2, bty='n', x.intersp=0.5, pch=c(1,2,1,2), inset=0.02)

# use position data of previous legend to draw legend with invisble lines and points but with labels and box. x.intersp controls distance between lines and labels
legend(x = L$rect$left, y = L$rect$top, legend = c('Group A', 'Group B'), col=rep(NA,2), lty=c(1,1), ncol=1, x.intersp = 3, bg = NA)

enter image description here

9
koekenbakker

これをチェックして:

library(lattice)

myPCH <- 15:17
Data  <- rnorm(50)
Index <- seq(length(Data))

xyplot(Data ~ Index, 
       pch = myPCH, col=1:2,
       key = list(space = "right", adj=1,
                  text = list(c("a", "b", "c"), cex=1.5),
                  points = list(pch = myPCH),
                  points = list(pch = myPCH,col=2)))

enter image description here

3
RUser