R:点和线颜色不同的图例(对于同一图例项)
使用legend()函数可以使点和线具有不同的颜色吗?我觉得我错过了一些很明显的东西。R:点和线颜色不同的图例(对于同一图例项),r,legend,R,Legend,使用legend()函数可以使点和线具有不同的颜色吗?我觉得我错过了一些很明显的东西。pt.bg选项可以更改背景颜色,但我没有看到pt.fg选项 当分别使用不同颜色的lines()和points()命令并希望图例表示打印内容时,会出现这种情况 我认为使用merge选项是可能的,但我显然不太明白这是为了什么 例如: plot( 0, type="n", xlim=c(0,5), ylim=c(0,5) ) A <- matrix( c( c(1,2,3,4), c(2,1,2,4)), nc
pt.bg
选项可以更改背景颜色,但我没有看到pt.fg
选项
当分别使用不同颜色的lines()和points()命令并希望图例表示打印内容时,会出现这种情况
我认为使用merge
选项是可能的,但我显然不太明白这是为了什么
例如:
plot( 0, type="n", xlim=c(0,5), ylim=c(0,5) )
A <- matrix( c( c(1,2,3,4), c(2,1,2,4)), ncol=2 )
B <- matrix( c( c(1,2,3,4), c(1,3,3,2)), ncol=2 )
lines( A, col="red" )
points( A, col="blue", pch=15 )
lines( B, col="green" )
points( B, col="purple", pch=17 )
legend( x="topleft",
legend=c("Red line, blue points","Green line, purple points"),
col=c("red","green"), lwd=1, lty=c(1,2),
pch=c(15,17) )
legend( x="bottomleft",
legend=c("Red line","blue points","Green line","purple points"),
col=c("red","blue","green","purple"), lwd=1, lty=c(1,NA,2,NA),
pch=c(NA,15,NA,17) )
legend( x="left",
legend=c("Red line, blue points","Green line, purple points"),
col=c("red","green"), lwd=1, lty=c(1,2), pch=c(15,17), merge=FALSE )
legend( x="bottomright",
legend=c("Red line","blue points","Green line","purple points"),
col=c("red","blue","green","purple"), lwd=1, lty=c(1,NA,2,NA),
pch=c(NA,15,NA,17), merge=FALSE )
legend( x="topright",
legend=c("Red line, blue points","Green line, purple points"),
col=c("red","blue","green","purple"), lwd=1, lty=c(1,2),
pch=c(15,17), merge=FALSE )
您可以通过两次调用
legend
,第一次绘制线条,然后第二次调用在顶部绘制不可见的线条,但以所需的颜色绘制点:
plot( 0, type="n", xlim=c(0,5), ylim=c(0,5) )
A <- matrix( c( c(1,2,3,4), c(2,1,2,4)), ncol=2 )
B <- matrix( c( c(1,2,3,4), c(1,3,3,2)), ncol=2 )
lines( A, col="red" )
points( A, col="blue", pch=15 )
lines( B, col="green" )
points( B, col="purple", pch=17 )
legend( x="topleft",
legend=c("Red line, blue points","Green line, purple points"),
col=c("red","green"), lwd=1, lty=c(1,2),
pch=c(NA,NA) )
legend( x="topleft",
legend=c("Red line, blue points","Green line, purple points"),
col=c("blue","purple"), lwd=1, lty=c(0,0),
pch=c(15,17) )
当然,这只能从左边正确排列。如果你想让绘图在一个右角,那么将第一次调用的返回值保存到
legend
,并将其用于第二次调用中的位置。我猜你必须自己动手/翻滚……太棒了!把它作为答案贴出来。我没有看到你的解决方案。最后一个建议是避免两份文本相互重叠打印,这只适用于“左”对齐的图例。另一个技巧是使用text.col
选项,该选项也适用于“右”对齐的图例。在第一个调用中使用text.col=“white”
,在第二个调用中使用text.col=“black”
调用legend
。对于水平对齐的图例也不起作用@Simon在问题中发布了他自己的解决方案(修改legend函数本身),它非常适合我。
LEGEND( x="bottomleft",
legend=c("Red line, blue points","Green line, purple points"),
col=c("red","green"),
lwd=1, lty=c(1,2), pch=c(15,17) )
LEGEND( x="bottomright",
legend=c("Red line, blue points","Green line, purple points"),
pt.col=c("blue","purple"), line.col=c("red","green"),
lwd=1, lty=c(1,2), pch=c(15,17) )
plot( 0, type="n", xlim=c(0,5), ylim=c(0,5) )
A <- matrix( c( c(1,2,3,4), c(2,1,2,4)), ncol=2 )
B <- matrix( c( c(1,2,3,4), c(1,3,3,2)), ncol=2 )
lines( A, col="red" )
points( A, col="blue", pch=15 )
lines( B, col="green" )
points( B, col="purple", pch=17 )
legend( x="topleft",
legend=c("Red line, blue points","Green line, purple points"),
col=c("red","green"), lwd=1, lty=c(1,2),
pch=c(NA,NA) )
legend( x="topleft",
legend=c("Red line, blue points","Green line, purple points"),
col=c("blue","purple"), lwd=1, lty=c(0,0),
pch=c(15,17) )
legend( x="topleft",
legend=c("",""),
col=c("blue","purple"), lwd=1, lty=c(0,0),
pch=c(15,17), bty='n' )