2

Rで凡例を自動的に生成することは何とか可能ですか? 私を本当に悩ませているのは、凡例を表示するために入力しなければならない冗長な情報です (たとえば、線の色など)。

plot(
  c(1:5), c(.7, 2.2, 3.1, 3.9, 5.2),
  col=1,
  pch=3,
  type="b"
)

lines(
  c(1:5), c(1:5),
  col=2,
  pch=6,
  type="o"
)

legend(
  "topleft",
  legend=c("data", "expactation"),
  col=c(1, 2),
  pch=c(3, 6),
  lty=c(2 ,1)
)

線の色については、コマンドplotlines. この情報を凡例に再度追加する必要がなければいいのですが。

たとえば、「線」オブジェクトと「プロット」オブジェクトを変数に格納し、これらのオブジェクトのみを凡例 (凡例が必要な情報を見つける場所) に渡すことは可能ですか?

p = plot(...)
l = lines (...)
legend("topleft", p, l)
4

3 に答える 3

3

たとえば、「線」オブジェクトと「プロット」オブジェクトを変数に格納し、これらのオブジェクトのみを凡例に渡すことは可能ですか (凡例が必要な情報を見つける場所)

簡単ではありません。ただし、ggplot2 はこの機能を提供します。例えば、

##Create some data and load the library
dd = data.frame(x = c(1:5,1:5), y = c(.7, 2.2, 3.1, 3.9, 5.2, 1:5), 
                type=rep(c("data", "expectation"), each=5))

require(ggplot2)

次にオブジェクトを作成しますplot`:

##Legend is automatically generated
g = ggplot(data=dd, aes(x = x, y=y)) + 
    geom_point(aes(colour=type, pch=type))
g

「プロット オブジェクト」にいくつかの行を追加するのではありません。

g + geom_line(aes(colour=type, pch=type))
于 2012-11-02T09:33:50.600 に答える
2

いいえ、非常に多くの作業と関数のラッパーがplotなければ、指定したスタイルを一度記録して、さまざまなプロット関数と凡例に渡す必要があります。

ggplot2と格子パッケージは、この種のこと自動化するレベルのアプローチです。

于 2012-11-02T09:34:50.057 に答える
0

凡例をプロットのように見せたい場合は、凡例をカスタマイズする必要があります。ラティスには技術的にauto.keyオプションがありますが、デフォルトの色と点のタイプが醜いものになります。ただし、プロットを作成する前にパラメーターの値を簡単に保存し、対応する引数に渡すことができます。以下はラティスの例です:

#your example data
d <- data.frame(a=rep(1:5,2), b=c(.7, 2.2, 3.1, 3.9, 5.2, 1, 2, 3, 4, 5), 
                c=rep(c("data", "expactation"),each=5))
#your `pch` and 'col` you pass to the plot
pch.a <- c(3,6)
col.a <- 1:2
library(lattice)
xyplot(a ~ b, groups=c, data = d, type="o", col=col.a, pch=pch.a, aspect=1/2,
       key = list(points=list(pch=pch.a, col=col.a), text=list(levels(d$c))))

ここに画像の説明を入力

于 2012-11-02T12:40:35.307 に答える