2012-11-10 1 views
4

Actuellement, mon code permet initialement à l'utilisateur de sélectionner l'ensemble de données qu'il souhaite (Un choix de deux). Ensuite, en fonction de ce qu'ils choisissent, d'autres variables de traçage pour les sous-ensembles respectifs des ensembles de données apparaissent. Cela fonctionne bien, à part le fait que je voudrais que les parcelles soient superposées sur une seule parcelle, plutôt que séparément, car elles apparaissent par défaut.Un problème R Shiny - traçage de plusieurs lignes sur un graphique

J'ai un tracé par défaut, plot_Total, et les autres options dans les ensembles de données examinent des sous-ensembles particuliers de celui-ci. Donc, il serait logique d'avoir une seule dispersion.

output$plot_Total <- reactivePlot(function() { 
    plot.new() 
    plot.window(xlim=c(1850,2020), ylim = c(0,5000000)) 
    axis(1) 
    axis(2) 
    title(main="Numbers over the years") 
    title(xlab="Year") 
    title(ylab="Number of people") 
    box() 
    points(dat$Year, dat$Total, col="red") 
    lines(dat$Year, dat$Total, col="red") 
    }) 

output$plot_subset1 <- reactivePlot(function() { lines(dat$Year, dat$subset1) }) 
output$plot_subset2 <- reactivePlot(function() { lines(dat$Year, dat$subset2) }) 

Pourquoi cet extrait de code ne fonctionne-t-il pas? Il crée simplement des espaces vides pour chaque graphe (indésirable), sous lequel il est écrit "Erreur: plot.new n'a pas encore été appelé". Comment puis-je spécifier d'ajouter ces lignes au tracé par défaut (plot_Total)?

+3

Avez-vous regardé l'exemple sur la page d'accueil pour brillant? Il semble faire ce que vous voulez en ajoutant une commande de traçage de bas niveau à un tracé existant: http://www.rstudio.com/shiny/ – Chase

Répondre

7

Mise à jour: En jouant avec le code pour le graphique sur la page d'accueil brillant, j'ai réalisé que je devais faire:

output$plot_Total <- reactivePlot(function() { 
    plot.new() 
    plot.window(xlim=c(1850,2020), ylim = c(0,5000000)) 
    axis(1) 
    axis(2) 
    title(main="Numbers over the years") 
    title(xlab="Year") 
    title(ylab="Number of people") 
    box() 
    points(dat$Year, dat$Total, col="red") 
    lines(dat$Year, dat$Total, col="red") 
    if (input$RC) { lines(dat$Year, dat$dat)} 
    }) 

Cela diffère de mon code d'origine de deux façons. Premièrement, le conditionnel est ajouté comme une seule ligne dans la même fonction reactiveplot. Deuxièmement, j'ai créé un nouveau data.frame qui ne contient que le sous-ensemble RC. Initialement, cela ne fonctionnait pas en entrée $ dat $ RC, mais lorsque RC est une base de données, elle fonctionne comme une entrée $ RC. Points à suivre pour me diriger dans la bonne direction!

Questions connexes