6

xyplotパッケージから使用しlatticeて、何年にもわたって時系列をプロットします。この期間が「特別」であったことを示すために、これらの年の一部に影付きの領域を追加します (戦争など)。

これが些細なことである場合はお詫び申し上げますが、その方法がわからなかったので、誰かが私を助けてくれるか、少なくとも正しい方向に向けてくれれば幸いです。私の主な問題は、この問題へのアプローチ方法が本当にわからないことだと思います。私はまだR、lattice特にRには比較的慣れていません。

ここに最小限の例があります:

 xyplot( rnorm(100) ~ 1:100, type="l", col="black")

対応するプロットでは、プロット領域の下部から上部までの背景の色 (たとえばx-45 から 65 までの値) を薄い灰色などで陰影付けしたいと思います。

私がこれまでに見つけた解決策は、baseグラフィックスと関数を使用していることに注意してください。ただしpolygon、曲線の下または上の領域を陰影付けすることが目的であり、これは私がやりたいこととは異なります。線の下または線の上に「ただ」影を付けたいわけではありません。代わりに、特定の時間間隔で背景全体をシェーディングしたいと思います。

誰かがここで私を助けてくれたら、とても感謝しています!

4

3 に答える 3

4

これを試して:

 xyplot( 
    rnorm(100) ~ 1:100, type="l", col="black",
    panel=function (x,y,...){
    panel.rect(xleft=45, xright=65,ybottom=-3, ytop=3,col="grey")
    panel.xyplot(x,y,...)
    }
  )

このpanel.rect()関数は四角形を制御し、関数と同等の格子ですrect()。便利なさまざまな設定があります。最初に呼び出され、次に がそのxyplot()上に配置されます。ybottomパラメータとytopパラメータを好みの外観にするには、少しいじる必要があります。

于 2013-08-30T16:30:52.470 に答える
3
trellis.focus("panel", 1, 1)
grid.rect(x =.55, , y=.5, w = .2, height=6,  
  gp = gpar(fill = "light grey"))
trellis.unfocus()

これは、いくつかの点で@JohnPaulのソリューションとは異なります(そして、彼の答えの方が優れていると思います)。これは、「ネイティブ座標」に配置するために目的の X バンドの中心を使用し、幅を「range(xlim)/range(band)」として計算し、既存のプロットを変更します。grid.rectfunction は、 によって使用されるグリッド パッケージの下位レベルの関数ですpanel.rect。システム内に格子パネルを統合することが私を打ち負かすときに、これが役立つことがありますxyplot

于 2013-08-30T16:31:23.277 に答える