R brillant de passer des variables à partir de sélectionner la liste de réactifs, de la parcelle
Je fais mes premiers essais avec brillant paquet, il est génial. Mais, comme d'habitude, je suis confronté à quelques problèmes. J'ai réussi, à la suite de brillantes tutoriel et googleing, à montrer les deux parcelles différentes de différentes stations météo, mais l'affichage de la même variable.
Je voulais ajouter une autre entrée de la liste de sorte qu'il est possible de choisir var est tracé. Lorsque vous essayez d'exécuter le script, ça semble fonctionner sans erreurs mais pas de complot apparaissent, juste le sélectionner des menus.
Peut-être il ya une erreur dans le passage de l'variables de serveur.R la sortie oblject parcelles ne sont pas correctement construire, juste une supposition. Essayé de travailler d'une manière générale la création de fonctions fonction d'entrée de vars, mais il me manque quelque chose, peut-être à propos de la réactivité, peut-être correctement passant vars,...
Ce sont les codes de l'interface utilisateur.R
library("shiny")
shinyUI(pageWithSidebar(
headerPanel('Comparación de zonas - Temperatura'),
sidebarPanel(
selectInput("panel1", "Zona:",
list("Zona 1" = "1",
"Zona 2" = "2",
"Zona 3" = "3",
"Zona 4" = "4")),
selectInput("panel2", "Zona:",
list("Zona 1" = "1",
"Zona 2" = "2",
"Zona 3" = "3",
"Zona 4" = "4")),
selectInput("var", "Variable:",
list("tempc" = "tempc",
"relhum" = "relhum")),
helpText('Al seleccionar la zona se crearán automáticamente
el gráfico de evolución temporal.')
),
mainPanel(
conditionalPanel(condition = "inputId == 'panel1'",plotOutput('myplot')
),
conditionalPanel(condition = "inputId == 'panel2'",plotOutput("myplot")
)
)
))
et le serveur.R
library(shiny)
library(plyr)
library(ggplot2)
shinyServer(function(input, output) {
formulaText <- reactive(function() {
paste("Gràfica de ggplot: Zona ", input$zona1)
})
# Return the formula text for printing as a caption
output$caption <- reactiveText(function() {
formulaText()
})
# datasets
datos=read.table("data.dat",header=T)
data=as.data.frame(datos)
data=within(data, datetime <- as.POSIXct(paste(date, time),format = "%Y%m%d %H%M%S"))
rams <- reactive({
subset(data,data$stat_id %in% places$stat_id[places$Zona == input$panel1])
})
plot <- function(var) {
p <- ggplot(rams(),aes(x=datetime, y=var, colour=as.character(stat_id))) +
geom_line()
}
plot=p(input$var)
if(input$var == "tempc") {
plot <- plot + ylab("Temperatura (ºC)") + xlab(" ") +
ggtitle(gtitol) + theme(legend.title=element_blank()) + theme(legend.position="bottom") +
scale_y_continuous(limits = c(-20,ylim),breaks=c(seq(-20,ylim,by=2))) }
if (input$var == "relhum") {
plot <- plot +
ylab("Humedad relativa (%)") + xlab(" ") +
ggtitle(gtitol) + theme(legend.title=element_blank()) + theme(legend.position="bottom") +
scale_y_continuous(limits = c(0,100),breaks=c(seq(0,100,by=5))) }
output$myplot <- reactivePlot(function() {
print(plot)
})
})
Je vous remercie d'avance pour votre aide et conseils
plot=p(input$var)
est faux- Oui, mais ce n'était pas le seul problème. Voir ma réponse ci-dessous. Merci.
- Bon à savoir
aes_string()
, que vous pour la publication de cette réponse.
Vous devez vous connecter pour publier un commentaire.
Enfin j'ai réussi. Les problèmes ont été à la fois la façon dont les variables sont transmises à partir de l'interface utilisateur.R entrée de serveur.R et comment ggplot traite avec une telle entrée. J'ai eu à utiliser aes_string de gérer les noms de variables. Maintenant, les deux premiers de la liste select permet de sélectionner le bloc de données utilisé dans la partie supérieure/inférieure de parcelles, tandis que la troisième sélectionne la variable doit être tracée, par le biais de la création de différents ggplot commandes.
Bien que le script fonctionne maintenant il ya encore quelques problèmes pour optimiser le code de sorte qu'il peut travailler de manière plus générale. J'construction de deux différentes trames de données par subsetting le plus grand et peut-être mieux d'avoir un seul et sous-ensemble. J'ai défini deux parcelle de sorties (myplot1 et myplot2) que je ne pouvais pas trouver comment gérer un seul pour les deux conditionnelle panneaux. Il y a encore du travail mais comme un débutant dans la brillante je suis heureux, il est en cours d'exécution.
En tout cas, je joins le code de travail pour moi et attendre que cela aidera quelqu'un:
de l'interface utilisateur.R
serveur.R