Home > Software design >  How to give colors based on the Y axis values in my geom_violin?
How to give colors based on the Y axis values in my geom_violin?

Time:07-08

How to give colors based on the Y axis values in my geom_violin? I would like to show that factors with larger y values have a more intense blue and factors with smaller y values have a less intense red. I would like to keep that color palette. Please can someone help me?

I have de following script in R:

ggplot(df4, aes(x =orden, y = size, fill = orden))  
  geom_violin(trim = FALSE)  
  scale_fill_brewer(palette="RdBu") 
  geom_boxplot(width = 0.07)     
  scale_x_discrete(labels = c("Insectos palo","Hormigas", "Escarabajos",
                                "Áfidos", "Moscas", "Mariposas", "Polillas", 
                                "Saltamontes"))  
  labs(x=c(""),y="Tamaño del genoma (Mb)") 
  #scale_y_continuous(trans = "log2") #, breaks = c(20, 40, 80))
  theme_classic()

enter image description here

Many thanks

CodePudding user response:

Try this. I've put alpha in the geom_violin to vary the intensity of that geom.

library(tidyverse)
library(RColorBrewer)

# Made-up data
df <- tribble(
  ~orden, ~size,
  1, 1,
  1, 2,
  1, 1.2,
  2, 1.7,
  2, 1.3,
  2, 1.5,
  3, 4.7,
  3, 4.3,
  3, 5.5
) 

# Plot
df |>
  group_by(orden) |> 
  mutate(orden = factor(orden),
         alpha = mean(size)) |> 
  ungroup() |> 
  ggplot(aes(orden, size, fill = orden))  
  geom_violin(aes(alpha = alpha), trim = FALSE)  
  scale_fill_brewer(palette = "RdBu")  
  geom_boxplot(width = 0.07)  
  scale_x_discrete(labels = c(
    "Insectos palo", "Hormigas", "Escarabajos",
    "Áfidos", "Moscas", "Mariposas", "Polillas",
    "Saltamontes"
  ))  
  labs(x = NULL, y = "Tamaño del genoma (Mb)", fill = "orden")  
  theme_classic()  
  guides(alpha = "none")

Created on 2022-07-07 by the reprex package (v2.0.1)

  • Related