Cómo trazar valores negativos utilizando ggplot geom_col evitando la interpolación de valores.
Tengo el siguiente marco de datos:
dat <- structure(list(kd_hdp = c(
-1.30681818181818, -0.896, -0.952,
-0.952, -1.208, -1.108, -1.108, -1.008
), dose = structure(c(
3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L
), .Label = c(
"0.3mM", "1mM", "3mM",
"10mM", "20mM"
), class = "factor"), status = structure(c(
1L,
4L, 4L, 3L, 1L, 1L, 1L, 2L
), .Label = c(
"-", "+", "++", "+++",
"++++"
), class = "factor")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -8L))
Los datos se ven así:
> dat
# A tibble: 8 × 3
kd_hdp dose status
1 -1.31 3mM -
2 -0.896 3mM +++
3 -0.952 3mM +++
4 -0.952 3mM ++
5 -1.21 3mM -
6 -1.11 3mM -
7 -1.11 3mM -
8 -1.01 3mM +
Cuando lo grafico con el siguiente código:
library(tidyverse)
ggplot(dat, aes(x = status, y = kd_hdp)) +
geom_col() +
theme(axis.text.x=element_text( size = 25),
axis.text.y=element_text( size = 25)
)
Obtengo esto:
Observa que el eje Y del gráfico se extiende hasta > -4
mientras que el valor más bajo de kd_hdp
es -1.21.
¿Cómo puedo hacer que ggplot produzca un eje Y con el valor exacto de los datos de entrada?
davy.ai
Este problema es causado por la configuración predeterminada de ggplot2, que automáticamente expande el rango del eje y para dejar espacio para valores atípicos o etiquetas potenciales. Para hacer que ggplot2 produzca un eje y con valores exactos como en los datos de entrada, podemos utilizar la función
scale_y_continuous
y establecer su argumentolimits
a los valores mínimo y máximo dekd_hdp
. Aquí está el código modificado:{r}
ggplot(dat, aes(x = status, y = kd_hdp)) +
geom_col() +
scale_y_continuous(limits = c(min(dat$kd_hdp), max(dat$kd_hdp))) +
theme(axis.text.x=element_text(size = 25),
axis.text.y=element_text(size = 25))
Esto debería producir un gráfico con un eje y que tenga los valores exactos de los datos de entrada.