8

複数のデータセットのプロットを生成します。各データセットは、ギリシャ文字、plotmathシンボル、またはsubとsuperscritionを含む可能性のある独自の凡例を取得する必要があります。凡例テキストをループで生成したいと思います。

凡例テキストが1つしかない場合、Bquoteは正常に機能します。追加の凡例テキストを追加しようとすると、plotmath-commadsが失われます...

x <- 0:10
y1 = x * x
y2 = x * 10

plot (1,1, type="n", xlab=bquote(Omega), ylab="Y", las=1, xlim=range(x), ylim=range(y1, y2))
lines(x, y1, col=1, pch=1, type="b")
lines(x, y2, col=2, pch=2, type="b")

# generate legend texts (in a loop)
legend_texts = c(
  bquote(Omega^2)
  , bquote(Omega%*%10)
)
# Using a single bquote works fine:
#legend_texts = bquote(Omega^2)
#legend_texts = bquote(Omega%*%10)

legend(
  "topleft"
  , legend = legend_texts
  , col = c(1:2)
  , pch = c(1:2)
  , lty = 1
  )
4

2 に答える 2

6

これを試して:

 legend_texts = expression(
   Omega^2, Omega*10)

 legend(
   "topleft"
   , legend = legend_texts
   , col = c(1:2)
   , pch = c(1:2)
   , lty = 1
   )

あなたが望むOmega^10かどうOmega*10かはわかりませんでしOmega%*%10たが、それらはすべて許容できるプロット数学式を生成します。

ここに画像の説明を入力してください

于 2013-03-08T07:42:28.073 に答える
4

「legend_texts」を次のように変更します。

# generate legend texts (in a loop)
legend_texts = c(
  as.expression(bquote(Omega^2))
  , as.expression(bquote(Omega%*%10))
)

のヘルプ ページで?legendは、「凡例」引数は次のように説明されています。

文字または式ベクトル。長さ ≥ 1 のものが凡例に表示されます。他のオブジェクトは as.graphicsAnnot によって強制されます。

出力:

ここに画像の説明を入力

于 2013-03-08T07:37:10.027 に答える