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):
-
Respuesta directa:
Intenta agregarshowlegend = FALSE
dentro deplot_ly()
función, no en ellayout()
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 usandoshowlegend
opción de laplot_ly()
afectará a la traza en sí, guardando su comportamiento dentro de susubplot
. 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)
-
Mejor práctica bajo plotly 4.0 y superior.
Usar el operador de tubería%>%
y elgroup_by()
función en lugar desplit
como 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 Species
pasó 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ó.