plotly / plotly/plotly.R

Give custom name to legend items in ggplotly object

Abierto
#1,324 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

ggplotly
Lenguaje dominante
R
Estrellas
2.7k
Forks
641
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi,

I want to make the legend items to be displayed by the choice of inputs and having an "and" between two variables.
I added my sample shiny app, which demonstrates the need for this.
I can change the legend items in ggplot itself. But ggplotly object doesn't reflect this change.

If anybody help me on this, I would be appreciated.

Thank you.
Mustafa

library(data.table)
library(shiny)
library(plotly)
library(shinycssloaders)

global.R file:

df <- data.frame(gender=rep(c("Male", "Female", "Both gender"), each=12, times=3),
age.group=rep(c("15 years and over", "15 to 19 years", "15 to 64 years"), each=36, times=1),
rate=rnorm(108, mean=5, sd=1),
date=rep(seq(as.Date('1976-01-01'),as.Date('1977-01-01'),by = 31), times=9))

df <- as.data.table(df)

mycolor12 = c("#bdc9e1","#55aadb","#016c59", "#FF8C00", "#EE3B3B", "#EEC591", "#00FFFF",
"#8B7500", "#AB82FF", "#FFFFE0", "#FFE1FF", "#8B7E66")

ui.R file:

navbarPage("Sample app",
navbarMenu('First dataset',
tabPanel("Second navigation bar",
fluidRow(
column(3,
wellPanel(
checkboxGroupInput("gender", label = "Gender",
choices = c(
"Both gender",
"Male",
"Female"),
selected = "Both gender"
),
checkboxGroupInput("agegroup", label = "Age group",
choices = c(
"15 years and over",
"15 to 19 years",
"15 to 64 years"),
selected = "15 years and over"
)
),
width=4,
height=110
),
hr(),
column(9,
plotlyOutput('plot_interactive', width=1000, height =450) %>%
withSpinner(color="#0dc5c1"))
)
)
)
)

server.R file:

function(input, output,session){

df_interactive <- reactive({

df[age.group %in% input$agegroup &
     gender %in% input$gender] 

})

target_plot <- reactive({
p <- ggplot(df_interactive(), aes(x=date, y=rate, colour = interaction(age.group, gender)))+
geom_line(aes(color=interaction(age.group, gender)), size=0.5)+
labs(y = "", x = "") +
scale_color_manual(values = mycolor12, name = '',
labels = paste(input$agegroup, input$gender, sep=" and "),
guide = guide_legend(
title="",
direction = "vertical",
label.position = "right",
label.hjust = 0.5,
label.vjust = 1
))+
scale_y_continuous(labels = scales::percent) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y")

p <- ggplotly(p) %>% config(displayModeBar = F) %>%
  layout(legend = list(orientation = "v", x = 1, y=0.3, font = list(size = 10, bgcolor = 'rgb(251)')))

})

output$plot_interactive <- renderPlotly({
target_plot()
})
}

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Ejecuta la aplicación Shiny de ejemplo desde ui.R, server.R y global.R; después, inspecciona target_plot, donde ggplotly convierte la leyenda de ggplot. Compara las etiquetas solicitadas de scale_color_manual con la salida de la leyenda interactiva; se considera terminado cuando la leyenda de ggplotly muestra las entradas seleccionadas unidas con "and".

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
r
Área
data-visualization
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.