7

ggvis でデータポイントの色を制御することについて質問があります。

複数の方法でフィルタリングしているデータフレームがあります(重要な場合に備えて、光沢のあるアプリ内で)。これにより、結果のフィルタリングされたデータフレームに存在することにより、データポイントを色付けしているグループの観測が行われないことがよくあります。これにより、明らかに異なるプロットに異なる色が表示され、混乱を招きます。

これは非常に近い例です:

set.seed(101)
dfvis <- data.frame(x = runif(20), y = runif(20), mygroup = LETTERS[1:5])
dfvis


dfvis %>% 
  ggvis(x= ~x, y= ~y)  %>% 
  layer_points(fill = ~factor(mygroup))
   

ここに画像の説明を入力

グループを除外しましょう -

  dfvis <- dfvis %>% filter(mygroup!="A")
    
    dfvis %>% 
      ggvis(x= ~x, y= ~y)  %>% 
      layer_points(fill = ~factor(mygroup))

ここに画像の説明を入力

ここで、「B」は青色になり、他のすべてのグループは色の順序で 1 つ上に移動します。

同じ df で複数のフィルターを実行するときに、因子/グループの各レベルで常に同じ色を確保する方法はありますか?

以前に ggplot で機能した 1 つのトリックは、因子レベルごとにデータフレームの最後に 1 つの NA 観測を追加することでした。一見すると、色が正しい順序に戻っているので問題なく動作しますが、左上に不正なデータ ポイントがあることに注意してください。

dfvis1 <- rbind(dfvis, data.frame(x=NA, y=NA, mygroup="A"))

dfvis1 %>% 
  ggvis(x= ~x, y= ~y)  %>% 
  layer_points(fill = ~factor(mygroup))

ここに画像の説明を入力

すべての助けに感謝します。

4

1 に答える 1