es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Añadir líneas horizontales en el gráfico de una función escalonada.

Adjunto una imagen, image.jpg, en la que quiero dibujar la línea y=0 para x<3 y la línea y=1 para x>=8, es decir, el resultado sería image2.jpg.

Estas son las instrucciones para image.jpg.

df <- data.frame(x=Asignaturas, y=solF)
df$xend <- c(df$x[2:nrow(df)],NA)
df$yend <- df$y
p <- (ggplot(df, aes(x=x, y=y, xend=xend, yend=yend)) +
geom_vline(aes(xintercept=x), linetype=2,color="grey") +
geom_point() + # Puntos sólidos a la izquierda
geom_point(aes(x=xend, y=y), shape=1) + # Puntos abiertos a la derecha
geom_segment() + # Línea horizontal
geom_text(aes(label = paste0(solF,''),vjust = -0.5), color = "black") +
ylab("Función de distribución") + 
xlab("Asignaturas"))
p

¿Alguien sabe cómo hacerlo?

Gracias

enter image description here

enter image description here

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para agregar la línea y=0 para x<3 y la línea y=1 para x>=8 en el gráfico, podemos usar la función geom_hline() de ggplot2.

    Aquí está el código modificado con las líneas agregadas:

    df <- data.frame(x=Asignaturas, y=solF)
    df$xend <- c(df$x[2:nrow(df)],NA)
    df$yend <- df$y
    p <- (ggplot(df, aes(x=x, y=y, xend=xend, yend=yend)) +
          geom_vline(aes(xintercept=x), linetype=2,color="grey") +
          geom_point() + # Puntos sólidos hacia la izquierda
          geom_point(aes(x=xend, y=y), shape=1) + # Puntos abiertos hacia la derecha
          geom_segment() + # Línea horizontal
          geom_text(aes(label = paste0(solF,''),vjust = -0.5), color = "black") +
          ylab("Función de distribución") + 
          xlab("Asignaturas") +
          # Agregar las líneas
          geom_hline(yintercept = 0, xmin = -Inf, xmax = 3, color = "blue") +
          geom_hline(yintercept = 1, xmin = 8, xmax = Inf, color = "red"))
    p
    

    Esto creará un gráfico con la línea azul y=0 para x<3 y la línea roja y=1 para x>=8.

    El gráfico actualizado con las líneas azul y roja

Comments are closed.