Reputation: 1
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()
Upvotes: 1
Views: 1950
Reputation: 26515
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)
Upvotes: 2
Reputation: 705
You can separate your animal column so that you get the label for control or treat.
library(tidyr)
growth_data_long <- growth_data_long %>% separate(animal, into = c("group", NA), sep = " ", remove = F)
Then produce the graph the same way as before changing color=animal
to color=group
.
growth_data_long %>% ggplot(aes(Day,Growth, group= animal)) + aes(color=group) +geom_line()+
geom_point()
Upvotes: 1