我有一个关于控制 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”现在是蓝色的,所有其他组在颜色顺序方面都上移了一个。
有没有办法在同一个 df 上执行多个过滤器时,始终确保因子/组的每个级别的颜色相同?
之前在 ggplot 中起作用的一个技巧是将一个 NA 观察值添加到每个因子级别的数据帧的末尾。乍一看,这没问题,因为颜色恢复了正确的顺序,但请注意左上角的流氓数据点!
dfvis1 <- rbind(dfvis, data.frame(x=NA, y=NA, mygroup="A"))
dfvis1 %>%
ggvis(x= ~x, y= ~y) %>%
layer_points(fill = ~factor(mygroup))
所有帮助表示赞赏。