R で異なる色の凡例アイテムを描く
胡金庫
2023年1月30日
この記事では、R でさまざまな色の凡例アイテムを描画する方法を示します。
legend
関数を使用して、R のプロットに凡例を追加する
legend
関数は、プロットに凡例オブジェクトを描画するために使用されます。凡例の位置を指定する最初の 2つの引数として、x
および y
座標を取ります。ただし、"left"
、"bottomright"
などのキーワードを使用して指定できます。次のパラメーターは legend
と呼ばれ、凡例に表示する必要のある文字のベクトルとして表されます。。この場合、三角形または円の形で示される線と点を描画します。線と点は色が異なるため、それに応じて凡例に表示する必要があります。次のコードスニペットは、凡例に図形とテキストのみを描画します。
library(ggplot2)
plot( 0, type = "n", xlim = c(0,5), ylim = c(0,5) )
A <- matrix( c( c(4,1,3,2), c(1,3,4,4)), ncol = 2 )
B <- matrix( c( c(1,4,3,2), c(1,3,1,1)), ncol = 2 )
lines( A, col = "brown" )
points( A, col = "blue", pch = 17 )
lines( B, col = "cyan" )
points( B, col = "purple", pch = 19 )
legend( x = "topleft",
legend = c("Brown line, blue triangles","Cyan line, purple points"),
col = c("blue","purple"), lwd = 2, lty = c(0,0),
pch = c(17,19) )
lty
引数ベクトルの値を増やすことで行を追加することもできます。1つは直線で途切れのない線に対応していることに注意してください。一方、pch
引数は、0:25
整数値にマップされるプロットシンボルを表し、points
関数のドキュメントで説明されています。
library(ggplot2)
plot( 0, type = "n", xlim = c(0,5), ylim = c(0,5) )
A <- matrix( c( c(4,1,3,2), c(1,3,4,4)), ncol = 2 )
B <- matrix( c( c(1,4,3,2), c(1,3,1,1)), ncol = 2 )
lines( A, col = "brown" )
points( A, col = "blue", pch = 17 )
lines( B, col = "cyan" )
points( B, col = "purple", pch = 19 )
legend( x = "topleft",
legend = c("Brown line, blue triangles","Cyan line, purple points"),
col = c("brown","cyan"), lwd = 1, lty = c(1,1),
pch = c(17,19), merge = FALSE)
ダブルレジェンド
コールを使用して、さまざまな色のレジェンドアイテムを描画する
前の例では、同じ色の単一のアイテムの線と形状を表示しています。これは、legend
関数を 2 回呼び出すことで解決できます。各呼び出しは、線と形状を異なる色で別々に表示します。ただし、呼び出しの 1つには、legend
パラメーターの空のベクトル値が必要です。
library(ggplot2)
plot( 0, type = "n", xlim = c(0,5), ylim = c(0,5) )
A <- matrix( c( c(4,1,3,2), c(1,3,4,4)), ncol = 2 )
B <- matrix( c( c(1,4,3,2), c(1,3,1,1)), ncol = 2 )
lines( A, col = "brown" )
points( A, col = "blue", pch = 17 )
lines( B, col = "cyan" )
points( B, col = "purple", pch = 19 )
legend( x = "topleft",
legend = c("Brown line, blue triangles","Cyan line, purple points"),
col = c("brown","cyan"), lwd = 1, lty = c(1,1),
pch = c(NA,NA) )
legend( x = "topleft",
legend = c("",""),
col = c("blue","purple"), lwd = 1, lty = c(0,0),
pch = c(17,19), bty= 'n')
著者: 胡金庫