2010-02-25 7 views
3

J'ai écrit une requête SQL qui me donne le nom des 10 alarmes les plus fréquentes de la semaine précédente. Et j'ai écrit une requête qui prend ces 10 premières alarmes et fournit un total annuel de YTD pour chacune de ces alarmes.R & ggplot2: Sparklines à partir de variables dynamiques (basé sur les résultats de la requête)

Maintenant, je cherche à créer un panel de sparklines montrant la tendance YTD pour chacune des 10 premières alarmes de la semaine.

J'ai quelque chose qui ressemble à ce que je voudrais, mais je dois maintenant le rendre "dynamique". c'est-à-dire pour le faire fonctionner sans coder en dur les noms des alarmes (puisque ceux-ci changeront avec la requête SQL chaque semaine).

Comment puis-je modifier le code R ci-dessous pour qu'il fonctionne sans coder en dur les noms des alarmes?

Est-ce que les niveaux (spark $ Alarm) ont quelque chose à voir avec?

Merci de bien vouloir

pour les conseils :-)

Week = c(rep(1:8,2)) 
Total = rnorm(16,1000,600) 
Alarm = c(rep("BELTWEIGHER HIGH HIGH",8), rep("MICROWAVE LHS",8)) 
spark <- data.frame(Week, Alarm, Total) 

s <- ggplot(spark, aes(Week, Total)) + 
    facet_grid(Alarm ~ ., scales = "free", as.table = FALSE) + 
    opts(
    panel.background = theme_rect(size = 1, colour = "lightgray"), 
    panel.grid.major = theme_blank(), 
    panel.grid.minor = theme_blank(), 
    axis.line = theme_blank(), 
    axis.text.x = theme_blank(), 
    axis.text.y = theme_blank(), 
    axis.title.x = theme_blank(), 
    axis.title.y = theme_blank(), 
    axis.ticks = theme_blank(), 
    strip.background = theme_blank(), 
    strip.text.y = theme_text(size = 7, colour = "red", angle = 90) 
) 

s1 <- s + geom_line(subset = .(Alarm == "BELTWEIGHER HIGH HIGH")) 
s2 <- s1 + geom_line(subset = .(Alarm == "MICROWAVE LHS")) 
s2 
+0

[connexes] (https://stackoverflow.com/questions/35434760/sparklines-in-ggplot2/35436104). – Axeman

Répondre

4

Ok qui était une question stupide :)

Voici la réponse évidente.

Week = c(rep(1:8,2)) 
Total = rnorm(16,1000,600) 
Alarm = c(rep("BELTWEIGHER HIGH HIGH",8), rep("MICROWAVE LHS",8)) 
spark <- data.frame(Week, Alarm, Total) 


s <- ggplot(spark, aes(Week, Total)) +   
    theme(
     panel.background = element_rect(size = 1, colour = "lightgray"), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     axis.line = element_blank(), 
     axis.text.x = element_blank(), 
     axis.text.y = element_blank(), 
     axis.title.x = element_blank(), 
     axis.title.y = element_blank(), 
     axis.ticks = element_blank(), 
     strip.background = element_blank(), 
     strip.text.y = element_blank() 
     #strip.text.y = element_text(size = 7, colour = "red", angle = 90) 
    ) 

s + facet_grid(Alarm ~.) + geom_line() 
+0

Pas bête, bien qu'il soit difficile de dire quelles sont les "alarmes" dans votre application particulière. La seule différence est que vous avez utilisé la facettisation? – isomorphismes

+0

Salut Lao, j'utilise le même code mais je reçois Erreur: Pas de couches dans le graphique L'exécution s'est arrêtée. vouloir générer des lignes d'étincelles. Merci beaucoup. – henna