У меня проблемы с загрузкой моего ggplot в виде файла png. Мой ggplot имеет функцию щелчка, поэтому, когда вы щелкаете по графику, порядок графика изменяется, поэтому у меня есть условие if и else в моем выводе renderPlot. Ниже приведена часть кода сервера:
output$plot1 <- renderPlot({
e <- as.character(input$AB1)
k <- TCGA(e) #function for cancer data
g <- MEANSD(e) #function for healthy data
test <- rbind(k,g) #combine healthy with cancer data
test$Tissue <- as.factor(test$Tissue) #row names of graph as factor -- important to order the graph according to alphabet or value of expression
if (plot_data$trigger %% 2 == 0) {
gg1 <- ggplot(test, aes(x= test$Origin , y= as.numeric(test$r), fill = Can))+geom_bar(position = position_dodge(), stat="identity", colour = "grey") + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + ggtitle(as.character(input$AB1)) + labs(y = "Expression level in log2(tpm+0.001) scale", x = "Tissue type (alphabetical order)")
gg1
} else {
ggplot(test, aes(x= reorder(test$Origin, -test$r, sum) , y= as.numeric(test$r), fill = Can))+geom_bar(position = position_dodge(), stat="identity", colour = "grey") + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + ggtitle(as.character(input$AB1)) + labs(y = "Expression level in log2(tpm+0.001) scale", x = "Tissue type (expression level order)")
}
})
output$tumordown <- downloadHandler(
filename = function () {
paste(input$AB1, "png", sep = ".")
},
content = function (file) {
ggsave(file, plot = gg1)
dev.off()
}
)
Приведенный выше код дает мне ошибку Сохранение 5,76 x 4 в изображении Предупреждение: ошибка в ggsave: объект 'gg1' не найден [трассировка стека недоступна ]
ggsave(file, plot = ggplot(test, aes(x= test$Origin , y= as.numeric(test$r), fill = Can))+geom_bar(position = position_dodge(), stat="identity", colour = "grey") + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + ggtitle(as.character(input$AB1)) + labs(y = "Expression level in log2(tpm+0.001) scale", x = "Tissue type (alphabetical order)")
и этот код дает мне: Сохранение 6,67 x 6,67 в изображении Предупреждение: Ошибка в: Вы передаете функцию в качестве глобальных данных. Вы неправильно написали аргумент data
в ggplot()
[Нет трассировки стека]
Мой первый вопрос: кто-нибудь знает, как обойти эту ошибку? Я проверил много примеров на этом сайте, но он все еще дает мне ошибки. Мой второй вопрос: если загрузка будет работать, можно ли сохранить условные графики if и else в одном png?
Большое спасибо за помощь!