#r #ggplot2 #shiny #dt
Вопрос:
Я пытаюсь создать простой блестящий интерфейс, который может создавать круговую диаграмму с помощью ggplot. Мне просто нужно, чтобы люди могли заполнить столбец «оценка», чтобы набор данных мог обновиться и, таким образом, обновить ggplot. Затем сохраните сюжет.
sous.fonctions <- c("1.Ralentissement des ruissellement et étalement des crues","2.Stockage des eaux, recharge des nappes et soutien d’étiage ","3.Interception et rétention des sédiments,pollution et MES ","4.Régulation des nutriments et pollution ","5.Stockage et séquestration du carbone ","6.Connexion des habitats","7.Support des habitats")
fonctions <- c("Hydrologique","Hydrologique","Hydrologique","Biogéochimique","Biogéochimique","Ecologique","Ecologique")
Datasource <- c("data","data","data","data","data","data","data")
score <- c(1,2,1,2,2,3,2)
data <- data.frame(sous.fonctions,fonctions,score,Datasource)
ggplot(data , aes(x = sous.fonctions, y = as.numeric(score), fill = fonctions))
geom_col(width = 1,colour="slategrey",position=position_dodge(),linetype= 'dashed',size=1.2)
coord_polar()
ylim(-0.5,5)
theme_minimal()
theme(axis.text.x=element_blank(),
axis.text.y=element_text(size=15,face="bold",colour="slategrey"),
axis.title.y = element_text(size=15, face="bold",colour="slategrey"),
legend.text = element_text(size=12,face="bold",colour="slategrey"))
xlab("") ylab(" Echelle de notation")
guides(fill=guide_legend(title=NULL))
scale_fill_manual(values=alpha(c("#f28726ff", "#29c649fe", "#708ce0ff"), .6))
geom_segment(aes(x = 0.5, y = 0, xend = 0.5, yend = 5),size= 1.5, lineend = "round",colour="slategrey",
arrow = arrow(length = unit(0.4, "cm")))
Я много пытался думать, но у меня нет ни уровня, ни времени, чтобы искать глубже.
Я попал в рандсонтейбл и искал почти 3 часа…
Моя последняя попытка была такой:
library(ggplot2)
library(shiny)
library(DT)
dt_output = function(title, id) {
fluidRow(column(
12, h4(paste0('Table ', sub('.*?([0-9] )
Если у кого-нибудь есть ключ к разгадке ^^
, '\1', id), ': ', title)),
hr(), DTOutput(id)
))
}
render_dt = function(data, editable = 'cell', server = TRUE, ...) {
renderDT(data, selection = 'none', server = server, editable = editable, ...)
}
sous.fonctions <- c("1.Ralentissement des ruissellement et étalement des crues","2.Stockage des eaux, recharge des nappes et soutien d’étiage ","3.Interception et rétention des sédiments,pollution et MES ","4.Régulation des nutriments et pollution ","5.Stockage et séquestration du carbone ","6.Connexion des habitats","7.Support des habitats")
fonctions <- c("Hydrologique","Hydrologique","Hydrologique","Biogéochimique","Biogéochimique","Ecologique","Ecologique")
Datasource <- c("data","data","data","data","data","data","data")
score <- c(1,2,1,2,2,3,2)
data <- data.frame(sous.fonctions,fonctions,score,Datasource)
shinyApp(
ui = fluidPage(
titlePanel("Création de graphique fonctionnalites zh"),
dt_output('Choix des notes', 'x'),
plotOutput("graph1")
),
server = function(input, output, session) {
data
options(DT.options = list(pageLength = 7))
# client-side processing
output$x = render_dt(data, 'column', FALSE)
# server-side processing
output$x = render_dt(data, 'column')
# edit a column
observeEvent(input$x_cell_edit, {
data <<- editData(data, input$x_cell_edit, 'x')
})
output$graph1 = renderPlot(ggplot(data[input$data_rows_all], aes(x = sous.fonctions, y = as.numeric(score), fill = fonctions))
geom_col(width = 1,colour="slategrey",position=position_dodge(),linetype= 'dashed',size=1.2)
coord_polar()
ylim(-0.5,5)
theme_minimal()
theme(axis.text.x=element_blank(),
axis.text.y=element_text(size=15,face="bold",colour="slategrey"),
axis.title.y = element_text(size=15, face="bold",colour="slategrey"),
legend.text = element_text(size=12,face="bold",colour="slategrey"))
xlab("") ylab(" Echelle de notation")
guides(fill=guide_legend(title=NULL))
scale_fill_manual(values=alpha(c("#f28726ff", "#29c649fe", "#708ce0ff"), .6))
geom_segment(aes(x = 0.5, y = 0, xend = 0.5, yend = 5),size= 1.5, lineend = "round",colour="slategrey",
arrow = arrow(length = unit(0.4, "cm"))))
}
)
Если у кого-нибудь есть ключ к разгадке ^^