4

R を使用して、式と文字変数を組み合わせた凡例で 3 つの線をプロットする場合、たとえば次のように書きました。

b1<-2
c1<-3
d1<-4
a<-seq(1,10)
b<-a+b1
c<-a+c1
d<-a+d1

plot(NA
 ,axes = FALSE       
 ,xlim=c(0,10)
 ,ylim=c(0,15)
 )
box()

lines(a,b,col=1)
lines(a,c,col=2)
lines(a,d,col=3)

legend(8,2
,c(expression(paste(italic(b)[1],"=2","m"))
,expression(paste(italic(c)[1],"=3","m"))
,expression(paste(italic(d)[1],"=4","m"))
  )
      )

上記のスクリプトは、私が望む凡例を正確に生成しますが、値 b1、c1、および d1 はスクリプトでハードコードされています。

変数 b1、c1、および d1 を凡例スクリプトに入れる方法はありますか? 私は多くの方法を試しました。

いいえ1。

b2<-as.character(b1)
legend(6,2
,c(expression(paste(italic(b)[1],b2,"m"))
,expression(paste(italic(c)[1],"=3","m"))
,expression(paste(italic(d)[1],"=4","m"))
  )
      )

no2.

legend(4,2
 ,c(bquote(paste(italic(b) [1], "=",.(b1),"m" ))

,expression(paste(italic(c)[1],"=3","m"))
,expression(paste(italic(d)[1],"=4","m"))
  )
      )

これは最初の行で機能しますが、bquote で 3 行を作成すると、機能しなくなります。

legend(2,2
 ,c(bquote(paste(italic(b) [1], "=",.(b1),"m" ))

,bquote(paste(italic(b) [1], "=",.(b1),"m" ))
,bquote(paste(italic(b) [1], "=",.(b1),"m" ))
  )
      )

素晴らしいアイデアはありますか?よろしくお願いします!

4

2 に答える 2

5

次のようなことを試してください:

lgnd <- c(bquote(italic(b)[1] == .(b1)*m),
          bquote(italic(c)[1] == .(c1)*m),
          bquote(italic(d)[1] == .(d1)*m))
legend(2,4, as.expression(lgnd))
于 2013-06-25T12:37:04.553 に答える
0

それはあなたが望むものをあなたに与えるべきだと思いますよね?

leg<-as.factor(paste("m =",c(b1,c1,d1)))
legend("bottomright", levels(leg), lwd=1, lty=1, col=c(1,2,3), cex=1.25)

ラインとレジェンド レベルの関連付けが間違っている可能性があります。修正するのはあなた次第です。;)

于 2013-06-25T12:24:38.587 に答える