2

1つのメジャー条件と1つのマイナー条件の2つの変数で条件付けられたデータがあります。主要な条件が色を決定し、マイナーな条件が線の描画に使用されるように、1つのパネルに点と線()を含むxyplot( )が必要です。latticetype='b'

これが私の問題を代表する例です(データフレームを生成するには、以下のコードを参照してください)。 dはメジャー条件であり、cはマイナー条件です。

> dat
     x          y c d
1    1  0.9645269 a A
2    2  1.4892217 a A
3    3  1.4848654 a A
....
10  10  2.4802803 a A
11   1  1.5606218 b A
12   2  1.5346806 b A
....
98   8  2.0381943 j B
99   9  2.0826099 j B
100 10  2.2799917 j B

条件付けする接続線を取得する方法は、プロットでc使用することです。groups=c次に、それらを区別する方法は、以下を条件とする式を使用することdです。

xyplot(y~x|d, data=dat, type='b', groups=c)

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

ただし、同じパネルにプロットが必要です。の数式条件を削除するとd1つのパネルが生成されますが、group=dを指定すると、「リトレース」線が描画されます。

xyplot(y~x, data=dat, type='b', groups=d, auto.key=list(space='inside'))

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

私が欲しいものは、これらの「リトレース」線がないだけで、上記のプロットに非常に似ています。

この例では、カテゴリ「A」の5行とそれに続くカテゴリ「B」の5行があることを知っているので、色を明示的に設定することは可能ですが、これは私の実際の問題では簡単に機能しません。さらに、auto.keyこのように色を設定する場合は役に立ちません。

xyplot(y~x, data=dat, type='b', groups=c, col=rep(5:6, each=5))

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

データ:

set.seed(1)
dat <- do.call(
  rbind,
  lapply(1:10,
         function(x) {
           firsthalf <- x < 6
           data.frame(x=1:10, y=log(1:10 + rnorm(10, .25) + 2 * firsthalf),
                                c=letters[x],
                                d=LETTERS[2-firsthalf]
                                )
         }
  )
)
4

2 に答える 2

3

デフォルトのグラフィカルパラメータは、superpose.symbolおよびから取得されますsuperpose.linepar.settings引数を使用してそれらを設定する1つの解決策。

## I compute the color by group 
col <-by(dat,dat$c,
                FUN=function(x){
                  v <- ifelse(x$d=='A','darkgreen','orange')
                  v[1]  ## I return one parameter , since I need one color
                  }
         )

 xyplot(y~x, data=dat, type='b', groups=c,
       auto.key = list(text =levels(dat$d),points=F),
       par.settings=
         list(superpose.line   = list(col = col),                 ## color of lines
              superpose.symbol = list(col=col),                   ## colors of points
              add.text = list(col=c('darkgreen','orange'))))      ## color of text in the legend

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

于 2013-01-31T15:20:42.593 に答える
1

格子である必要がありますか?ggplotでは、それはかなり簡単です。

library(ggplot2)

ggplot(dat, aes(x=x,y=y,colour=d)) + geom_line(aes(group=c),size=0.8) + geom_point(shape=1) 

これは手っ取り早い汚い例です。線の色、凡例、軸、背景などをカスタマイズできます。

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

于 2013-01-31T08:03:20.320 に答える