【发布时间】:2021-11-28 20:52:33
【问题描述】:
我在 R 中编写了以下程序:
-
从名为“giraffe”数据的数据框开始
-
抽取 30% 的数据并将其标记为“样本”
-
为此数据创建一个直方图,并将该直方图“采样”的区域着色为一种颜色,其他行另一种颜色
-
重复这个过程100次,制作这个过程的动画
library(ggplot2) library(dplyr) library(gganimate) giraffe_data <- data.frame( a = abs(rnorm(1000,17,10)), b = abs(rnorm(1000,17,10))) results <- list() for( i in 1:100) { giraffe_data_i <- giraffe_data a_i <- c("sample", "not_sampled") aa_i <- as.factor(sample(a_i, 1000, replace=TRUE, prob=c(0.3, 0.7))) giraffe_data_i $col = cut(giraffe_data_i$a, c(-Inf, 17, Inf)) giraffe_data_i$sample <- aa_i giraffe_data_i$iteration <- i + 1 results[[i]] <- giraffe_data_i } results results_df <- do.call(rbind.data.frame, results) animate( ggplot(results_df, aes(x=a, fill = col)) + geom_histogram(binwidth=1) + scale_fill_manual(breaks = levels(results_df$col), values = c('blue', 'red')) + transition_states(iteration, state_length = 0.2) + labs(title = "Group: {closest_state}"), fps = 25)
但由于某种原因,这个图表在动画中没有改变颜色。
谁能告诉我如何解决这个问题?
谢谢
注意:我可以使用以下代码更改颜色:
animate(
ggplot(results_df, aes(x=a, color = sample)) +
geom_histogram(fill="white", position="dodge")+
transition_states(iteration, state_length = 0.2) +
labs(title = "Group: {closest_state}"),
fps = 5)
但这将两种颜色显示为两个单独的“组”。我希望只有一个“组”,但在这个“组”中有不同的颜色。有人可以告诉我如何解决这个问题吗?
谢谢
【问题讨论】:
标签: r ggplot2 data-manipulation gganimate