В моем блестящем приложении у меня есть data.frame, который реагирует.Затем data.frame передается ggplot, и создается блок-схема.Тем не менее, я хотел бы установить точный порядок столбцов в диаграмме.Это я могу сделать с
JOIN11$ID_Polymer <- factor(JOIN11$ID_Polymer,
levels=JOIN11$ID_Polymer[order(JOIN11[["Content"]])])
в моем R-скрипте (function()
, который подготавливает данные вне блестящего сервера).
Я хотел бы установить порядок на блестящем серверетаким образом, пользователь может изменить аргумент упорядочения (пользователь может решить, хочет ли он упорядочить data.frame по «содержимому» или по другому столбцу, который он выберет).Я пытался что-то вроде этого:
dataforplot <- reactive({
plot_data <- data() %>%
filter(Name %in% input$polymers)
plot_data$ID_Polymer <- factor(plot_data$ID_Polymer,
levels =plot_data$ID_Polymer[ order(plot_data[["Content"]])])
})
, который не работает (ggplot
не отображается), ошибка говорит: data must be a data frame, or other object coercible by
fortify () , not a factor
.
функция для ggplot
выглядит следующим образом:
plotInput <- reactive({
ggplot(data = dataforplot(), aes(x = ID_Polymer, y = value), position = position_dodge(width = 1)) +
geom_bar(aes_string( fill=razeni()), position = position_dodge(width = 1), stat="identity", color="white")+
theme_minimal() +
theme(legend.text=element_text(size=21))+
theme(text = element_text(size=21))+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
ggtitle(input$title_text_box_id) +
labs(x = "", y = input$ylabel_text_box_id) +
geom_text(aes(x = ID_Polymer, y = value,Group=Polymer,label=value),
position = position_dodge(width = 1),vjust=2, size=5,colour = "white", fontface = "bold") +
scale_fill_tableau("Tableau 10")+
scale_x_discrete(labels=c(xpopisky()))#puts a reactive in x labels
})
Она работает, когда я не пытаюсь установить порядок на data.fram, когда я пропускаю
plot_data$ID_Polymer <- factor(plot_data$ID_Polymer,
levels =plot_data$ID_Polymer[ order(plot_data[["Content"]])])
Как это решить?