6

次のデータがあります。

Id = paste ("ID-", 1:5, sep = "")
position <- rep(seq (1, 100,10), each = 5)
group = rep (rep(rep (1:5, each = length (Id)), each = length(position)))
yvar <- rnorm (length(position), 0.5, 0.1)
ycat <- c(sample (c("A", "B"), length(yvar), replace = TRUE))
namevar <- rep(Id, length(group)/length(Id))
mydf <- data.frame (namevar, group, position, yvar, ycat)

groupはファセット変数、position連続 x 変数です。yvarタイルの色を塗りつぶすために使用されます。ycat各タイルのテキスト ラベルです。塗りつぶしの色とラベルでプロットするために選択した特定のタイルを除いて、すべての値に対して空白のプロットを作成したいと考えています。

これが私がこれまでに持っているものです:

  ggplot(mydf,aes(y=Id,x=position)) +
      facet_wrap(~group) +     
      geom_tile(aes(fill = yvar),colour = "black") +
      geom_text(aes(label = ycat)) +
      labs(x = NULL,y = NULL)

ここに画像の説明を入力

たとえば、30 ~ 50 の間のグループ 1 と 20 ~ 60 の間のグループ 5 を除いて、どこにでも空白スペースがあることを除いて、プロットを次のようにしたいと思います。

ここに画像の説明を入力

4

1 に答える 1

2

これにより、最後のプロットが作成されますが、選択した領域のみがシェーディングされます。

ggplot(mydf,aes(y=Id,x=position)) +
  facet_wrap(~group) + 
  geom_blank() +    
  geom_tile(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
                                (group == 5 & position >= 20 & position <= 60)),aes(fill = yvar),colour = "black") +
  geom_text(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
                                (group == 5 & position >= 20 & position <= 60)),aes(label = ycat),size = 3) +
  labs(x = NULL,y = NULL)
于 2012-05-04T14:54:11.453 に答える