Eu tenho esse aplicativo brilhante e quero colorir os pontos no gráfico de dispersão 3D com base na data selecionada, dando-lhes sempre uma cor específica e não uma cor aleatória que mudará quando eu os esconder e depois os trouxer de volta. Mas todos os meus pontos ainda são azuis
library(shiny)
library(tidyverse)
library(plotly)
library(dplyr)
df2<-structure(list(publicationDate = structure(c(18610, 18410, 18597,
18375, 18284), class = "Date"), x = c(8.593744, 10.341268, 11.454429,
10.595986, 11.012522), y = c(4.2456923, 6.767409, 5.2631335,
6.5070715, 7.6513457), z = c(5.6303487, 8.002673, 6.332502, 8.773426,
8.604475), influentialCitationCount = c(98.2037608756666, 100,
37.8052203199551, 99.6632051641875, 99.1018804378333)), row.names = c(NA,
5L), class = "data.frame")
df2 <- df2[order(df2[, 1]), ]
ui <- fluidPage(
titlePanel("3D Scatter Plot Visualization"),
sidebarLayout(
sidebarPanel(
pickerInput(inputId = "selectedDates",
label = "Choose Dates:",
choices = list(Dates = as.list(unique(df2$publicationDate)),PointColor = colors()[5]),
selected = unique(df2$publicationDate)[1],
multiple = TRUE,
options = list(
`actions-box` = TRUE,
`deselect-all-text` = "None...",
`select-all-text` = "Yeah, all !",
`none-selected-text` = "zero"
))
),
mainPanel(
plotlyOutput(outputId = "scatterPlot3D")
)
)
)
server <- function(input, output) {
output$scatterPlot3D <- renderPlotly({
# Filter data based on selected topicLabels
df2 <- df2[df2$publicationDate %in% input$selectedDates, ]
# Create the 3D scatter plot with bolded hover text
scatter3Dplot <- plot_ly(data = df2, x = ~x, y = ~y, z = ~z, color = ~publicationDate,
type = "scatter3d", mode = "markers",
marker = list(size = 3)
) %>%
layout(title = "3D Scatter Plot with Wrapped Title and Custom Popup by Date",
scene = list(
xaxis = list(title = "X Axis"),
yaxis = list(title = "Y Axis"),
zaxis = list(title = "Z Axis")
)) %>%
layout(legend = list(orientation = "h"),
showlegend = FALSE)
return(scatter3Dplot)
})
}
# Component 3: A call to the `shinyApp` function
shinyApp(ui = ui, server = server)
Como primeiro passo, crie uma paleta de cores personalizada para as datas de publicação e atribua as datas (exclusivas) como nomes. Eu simplesmente usei as cores padrão do ggplot2. Segundo, para usar a paleta de cores em seu gráfico, adicione-as por meio do
colors=
atributo. Terceiro, para o mapeamento de cores, convertapublicationDate
para um caractere: