Search code examples
rggplot2plotgraph

How to group plot colors in R


I have a plot in R using ggplot, say like the following. How can I group the plot colors, like all Control having same color, and the Treated having another color? So basically only two different colors total. Probably I need to use group aesthetics to do this.

Here is the data file. Here is the code:

{r}
growth_data_long <- growth_data %>% pivot_longer(-`animal`, 
                                   names_to=("Day"),
                                   values_to=("Growth"))

growth_data_long
{r}
growth_data_long %>% ggplot(aes(Day,Growth, group= animal)) + aes(color=animal) +geom_line()+
  geom_point()

enter image description here


Solution

  • Edit

    Here is a solution without using the tidyverse package:

    library(ggplot2)
    library(tidyr)
    
    growth_data <- read.csv("~/Downloads/growth_data.txt", sep = "\t")
    growth_data_long <- growth_data %>% pivot_longer(-`animal`, 
                                                     names_to=("Day"),
                                                     values_to=("Growth"))
    
    growth_data_long
    #> # A tibble: 60 × 3
    #>    animal    Day   Growth
    #>    <chr>     <chr>  <dbl>
    #>  1 Control 1 Day.1   1.08
    #>  2 Control 1 Day.2   1.49
    #>  3 Control 1 Day.3   2.73
    #>  4 Control 1 Day.4   2.81
    #>  5 Control 1 Day.5   3.8 
    #>  6 Control 1 Day.6   4.8 
    #>  7 Control 2 Day.1   1.22
    #>  8 Control 2 Day.2   1.86
    #>  9 Control 2 Day.3   2.01
    #> 10 Control 2 Day.4   2.53
    #> # … with 50 more rows
    
    growth_data_long$group <- gsub(x = growth_data_long$animal, pattern = " \\d+", replacement = "")
    
    
    ggplot(growth_data_long, aes(x = Day, y = Growth, group = animal, color = group)) +
      geom_line() +
      geom_point()
    

    Created on 2021-10-06 by the reprex package (v2.0.1)