# install.packages('khroma')
library(khroma)
highcontrast <- color("highcontrast")
penguins |>
ggplot(aes(x = bill_length_mm, y = bill_depth_mm)) +
geom_point(aes(color = species), size = 2) +
scale_color_manual(values = highcontrast(3)) +
theme_classic()
## Combining dplyr and ggplot
# Use dplyr to calculate mean and SD of each species
penguins |>
group_by(species) |>
mutate(mean_bill_length = mean(bill_length_mm, na.rm = T),
sd_bill_length = sd(bill_length_mm, na.rm = T),
mean_bill_depth = mean(bill_depth_mm, na.rm = T),
sd_bill_depth = sd(bill_depth_mm, na.rm = T)) |>
ggplot(aes(x = bill_length_mm, y = bill_depth_mm, color = species)) +
geom_point(size = 1, alpha = 0.6) +
geom_pointrange(aes(y = mean_bill_depth,
ymin = mean_bill_depth-sd_bill_depth,
ymax = mean_bill_depth + sd_bill_depth,
x = mean_bill_length, fill = species),
size = 3)+
geom_errorbarh(aes(y = mean_bill_depth,
x = mean_bill_length,
xmin = mean_bill_length-sd_bill_length,
xmax = mean_bill_length+sd_bill_length)) +
scale_color_manual(values = highcontrast(3)) +
guides(color = guide_legend(override.aes = (list(size = 1)))) +
theme_classic()
# Now do it by species and sex
penguins |>
na.omit() |>
group_by(species, sex) |>
mutate(mean_bill_length = mean(bill_length_mm, na.rm = T),
sd_bill_length = sd(bill_length_mm, na.rm = T),
mean_bill_depth = mean(bill_depth_mm, na.rm = T),
sd_bill_depth = sd(bill_depth_mm, na.rm = T)) |>
ggplot(aes(x = bill_length_mm, y = bill_depth_mm, color = species, shape = sex)) +
geom_point(size = 1, alpha = 0.6) +
geom_pointrange(aes(y = mean_bill_depth,
ymin = mean_bill_depth-sd_bill_depth,
ymax = mean_bill_depth + sd_bill_depth,
x = mean_bill_length),
size = 3)+
geom_errorbarh(aes(y = mean_bill_depth,
x = mean_bill_length,
xmin = mean_bill_length-sd_bill_length,
xmax = mean_bill_length+sd_bill_length)) +
scale_color_manual(values = highcontrast(3)) +
guides(color = guide_legend(override.aes = (list(size = 1))),
shape = guide_legend(override.aes = (list(size = 1)))) +
theme_classic()