web-dev-qa-db-ja.com

プロット上の時間範囲を強調表示する方法は?

時間の経過とともにサンプリングされたいくつかの信号があり、連続線を使用してRでプロットしています。さらに、プロット上のいくつかの特定の時間範囲を強調したいと思います。

私の現在のアプローチは、時間範囲に一致する適切な幅と水平位置を持つフルハイトの透明な長方形を描くことです。範囲内のポイントと範囲外のポイントを明確に分離しているため、これは適切な表現だと思います。しかし、もっと良いものはありますか?


そして、質問の2番目の実用的な部分。今、私はこのような信号をプロットしています:

p <- ggplot(data=gs, mapping=aes(x=frameno, y=value, col=variable)) +
       geom_line()
p

アルファブレンドされた長方形を手動で描画しようとしました:

p + geom_rect(aes(xmin=600, xmax=650, ymin=-3, ymax=3),
              colour=alpha("grey20", 0.5), fill.alpha=0.5)

—しかし、これまでのところ成功はありません。ヒントはありますか?

33
ulidtko

長方形を描くことはうまくいくと思います。 単純な垂直線 では不十分な場合、より良い解決策はわかりません。

また、透明性の問題には、_alpha=0.5_の代わりに_fill.alpha=0.5_を使用し、geom_rect()で_inherit.aes = FALSE_を指定します。例えば。ダイヤモンドデータからプロットを作成する:

_p <- ggplot(diamonds, aes(x=price, y=carat)) +
     geom_line(aes(color=color))

rect <- data.frame(xmin=5000, xmax=10000, ymin=-Inf, ymax=Inf)
p + geom_rect(data=rect, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
              color="grey20",
              alpha=0.5,
              inherit.aes = FALSE)
_

alt text

また、yminymaxを_-Inf_とInfに簡単に設定できることにも注意してください。

50
daroczig