Saltar al contenido

En R plotly subplot graph, ¿cómo mostrar solo una leyenda?

Te sugerimos que pruebes esta respuesta en un entorno controlado antes de pasarlo a producción, un saludo.

Solución:

Te daré dos respuestas, una directa y otra para una mejor práctica y posteridad (que también ayuda a comprender mejor el problema):

  1. Respuesta directa:
    Intenta agregar showlegend = FALSE dentro de plot_ly() función, no en el layout() una. Si nos fijamos en el ?subplot documentación:

    las opciones de diseño que se encuentran más adelante en la secuencia de gráficos anularán las opciones que se encuentran antes en la secuencia.

    En otras palabras, el diseño showlegend La opción solo se toma de su último gráfico. pero usando showlegend opción de la plot_ly() afectará a la traza en sí, guardando su comportamiento dentro de su subplot. Su código ahora sería el siguiente:

    require(plotly)  
    p1 <- plot_ly(data=iris,x=~Sepal.Length,y=~Sepal.Width,split=~Species,showlegend = F)
    p2 <-  plot_ly(data=iris,x=~Sepal.Length,y=~Sepal.Width,split=~Species, showlegend = T)  
    subplot(p1,p2)
    
  2. Mejor práctica bajo plotly 4.0 y superior.
    Usar el operador de tubería %>% y el group_by() función en lugar de splitcomo sigue:

    p1 <-
      iris%>%
      group_by(Species)%>%
      plot_ly(x=~Sepal.Length, color= ~Species)%>%
      add_markers(y= ~Sepal.Width)
    p2 <-
      iris%>%
      group_by(Species)%>%
      plot_ly(x=~Sepal.Length, color= ~Species)%>%
      add_markers(y= ~Sepal.Width, showlegend = F)
    subplot(p1,p2)
    

Esta práctica le permite comprender mejor cómo funcionan las trazas en forma gráfica. Puede ver que los datos se agrupan primero por Speciespasó a la plot_ly() función -que inicializa el gráfico- y luego especifica su tipo de seguimiento (marcadores) para hacer el gráfico.
Escribir su código de esta manera es más fácil cuando desea agregar o eliminar rastros y sus respectivas opciones, agregar una variable de agrupación o dividir/resumir su tabla.

La respuesta anterior resulta en un problema menor. La leyenda solo es interactiva con la primera trama. Debe agregar el grupo de leyendas a la función plot_ly para que la leyenda sea interactiva con ambas gráficas.

library(plotly)
p1 <-
  iris%>%
  group_by(Species)%>%
  plot_ly(x=~Sepal.Length, color= ~Species, legendgroup=~Species)%>%
  add_markers(y= ~Sepal.Width)
p2 <-
  iris%>%
  group_by(Species)%>%
  plot_ly(x=~Sepal.Length, color= ~Species, legendgroup=~Species)%>%
  add_markers(y= ~Sepal.Width, showlegend=F)
subplot(p1,p2)

Sección de Reseñas y Valoraciones

Ten en cuenta dar difusión a este artículo si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *