R中的图形不更改颜色 [英] Graph Not Changing Colors in R
本文介绍了R中的图形不更改颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用R编写了以下程序:
从名为&giraffe";data的数据框开始
对此数据的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)
但这将这两种颜色显示为两个独立的";组。我希望只有一个";group";,但这个";group";中有不同的颜色。有人能教我怎么解决这个问题吗?
谢谢
推荐答案
有时我发现对gganimate上游的数据进行转换更容易。因此,这里有一种方法,将数据打包并计算每次迭代的次数,然后像普通的柱状图一样绘制。
library(tidyverse); library(gganimate)
# bins of width 2
bin_wid = 2
results_df_bins <- results_df %>%
# "col" is set at 17 but my bins are at even #s, so to align
# bins with that I offset by 1
mutate(a_bin = floor((a + 1)/ bin_wid)*bin_wid) %>%
count(a_bin, col, sample, iteration) %>%
mutate(sample = fct_rev(sample)) # put "sample" first
animate(
ggplot(results_df_bins, aes(x=a_bin, y = n, fill = sample)) +
geom_col(position = position_stack(reverse = TRUE)) +
transition_states(iteration, state_length = 0.2) +
labs(title = "Group: {closest_state}"),
fps = 25, nframes = 500, height = 300)
这篇关于R中的图形不更改颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文