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.

Cómo mostrar el total en un gráfico de barras a medida que cambia la entrada en una aplicación R Shiny.

Estoy trabajando en una aplicación y en este momento quiero comparar los totales de carrera de dos jugadores de la NBA en un gráfico de barras mientras elijo y selecciono qué jugadores serán comparados. Por ejemplo, cuando selecciono a Michael Jordan y LeBron James y puntos de carrera, quiero un gráfico de barras que muestre 32,292 para Michael Jordan y 35,618 para LeBron James, pero si quisiera cambiar a LeBron James por Kareem Abdul-Jabbar, me gustaría que el gráfico de barras muestre 38,387. La capacidad de cambiar los datos de entrada ya ha sido atendida y el conjunto de datos necesario para hacer esto está implementado. Solo necesito ayuda para descubrir cómo hacer que geom_text(aes_string(label = *)) * cambie según las diferentes entradas en mi ggplot.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar la etiqueta de geom_text según la entrada seleccionada, puede usar una declaración ifelse dentro de la función aes_string. Por ejemplo:

    “`{r}
    library(ggplot2)

    crear un marco de datos con totales de carrera para tres jugadores

    datos <- data.frame(jugador = c(“Michael Jordan”, “LeBron James”, “Kareem Abdul-Jabbar”),
    puntos_carrera = c(32292, 35618, 38387))

    definir variables de entrada

    jugadores_seleccionados <- c(“Michael Jordan”, “LeBron James”)
    estadística_seleccionada <- “puntos_carrera”

    filtrar el marco de datos según las entradas seleccionadas

    datos_filtrados <- datos[datos$jugador %in% jugadores_seleccionados, ]

    crear objeto ggplot

    p <- ggplot(datos_filtrados, aes_string(x = “jugador”, y = estadística_seleccionada)) +
    geom_col(fill = “blue”) +
    geom_text(aes_string(label = ifelse(datos_filtrados$jugador == jugadores_seleccionados[1], datos_filtrados$puntos_carrera[1], datos_filtrados$puntos_carrera[2])))

    mostrar gráfico

    p
    “`

    En este ejemplo, usamos la declaración ifelse para verificar si el jugador del marco de datos coincide con el primer jugador seleccionado. Si lo hace, la etiqueta para geom_text será el total de carrera para ese jugador, que es datos_filtrados$puntos_carrera[1]. Si no coincide, la etiqueta será el total de carrera para el segundo jugador seleccionado, que es datos_filtrados$puntos_carrera[2].

    Puede modificar este código para incluir más jugadores y estadísticas para comparar ajustando las variables de entrada y la declaración ifelse correspondientemente.

Comments are closed.