R中的图形不更改颜色 [英] Graph Not Changing Colors in R

查看:15
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆