Olá!
Fiz um app no Shiny R para filtrar os dados de uma tabela, e por meio desta é feita uma clusterização no gráfico de dispersão, um agrupamento. Agora quero colocar rótulos nos pontos, mas rótulo de texto, indicando a universidade correspondente a cada ponto.
Segue script:
devtools::install_github(“ramnathv/htmlwidgets#351”)
library(shiny)
library(dplyr)
library(DT)
library(tidyverse)
library(stringr)
library(rmarkdown)
dados ← read_xlsx(‘notas_do_ENEM_1.xlsx’)
vars<-c(“Ensino”, “Pesquisa”, “Mercado”, “Inovação”, “Internacionalização”)
dtable<-dados
df<-dados
label1<-df$Universidade
ui ← fluidPage(
titlePanel("Aplicativo de notas do ENEM"),
sidebarLayout(
sidebarPanel(
selectInput("idCategoria", "Selecione a Categoria:",
choices=sort(unique(df$Categoria))),
selectInput("idCurso", "Selecione o Curso:",
choices=sort(unique(df$Curso))),
numericInput("num", "Insira sua Nota:", min=0, max=1000, value=0),
selectInput("x", "Selecione o que prioriza:", vars),
selectInput("y", "Selecione o que prioriza:", vars),
numericInput("clusters", 'Cluster count', 3, min = 1, max = 9)
),
mainPanel(
dataTableOutput("dtable"),
#dataTableOutput("matriz_D")
plotOutput("plot1")
)
)
)
server ← function(input, output, session) {
output$dtable<- DT::renderDataTable ({
dtable<-df%>%filter(Categoria==input$idCategoria & Curso==input$idCurso &Nota<=input$num)
DT::datatable(dtable)
})
selectedData <- reactive({
dtable[, c(input$x, input$y)]
})
clusters <- reactive({
kmeans(selectedData(), input$clusters)
})
output$plot1 <- renderPlot({
palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
"#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))
par(mar = c(5.1, 4.1, 0, 1))
plot(selectedData(),
col = clusters()$cluster,
pch = 1, cex = 3)
points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
geom_label(label=label1,
nudge_x=0.45, nudge_y=0.1,
check_overlap=TRUE,
label.padding=unit(0.55,"lines"),
label.size=0.4,
color="white",
fill="#038225")
})
}
shinyApp(ui = ui, server = server)
Alguém sabe como fazer isso? Tentei de 2 formas, mas nada até o momento…