2017-02-21 8 views
1

Sorry, wenn diese Frage bereits gestellt wurde!Ändern von Balkendiagramm Farben mit reaktiven Daten in glänzend

Ich schreibe eine glänzende Anwendung, die die Anwesenheitsrate von Schülern nach der Schule Aktivitäten untersucht. Die Daten sind nach Datum, Art der Aktivität, Schüler und danach, ob der Schüler an der Sitzung teilnahm oder nicht (eine binäre 1 für Ja und 0 für Nein) organisiert. Es gibt auch eine "Rate" -Spalte, die gerade mal mit 100 belegt ist (was ich für das Balkendiagramm verwende, siehe unten). Hier ist ein Beispiel für die Daten:

Date   Activity   Name    Attended Rate 
01/02/2017  Tutoring   John Doe   1   100 
01/02/2017  Music    Jane Smith   0   0 
02/02/2017  Drama    John Doe   0   0 

Im Moment zeichne ich die Daten auf einem Balkendiagramm. Ich plane die durchschnittliche Anwesenheitsrate nach Schülern und verwende einen reaktiven Datensatz (mydata()), der nach den Spalten Datum und Aktivität gefiltert wird. Hier ist der Code für die barchart:

output$attendancerate <- renderPlot({ 
ggplot(mydata(), aes(Name, Rate)) + 
stat_summary(geom = "bar", fun.y="mean") + 
coord_flip() + 
ylab("Attendance Rate (%)") + 
stat_summary(aes(label=round(..y..,1)), fun.y=mean, geom="text",hjust=-.2) 

Ich bin besonders daran interessiert, die Aufmerksamkeit auf die Schüler mit einer Teilnahmequote von 75% oder weniger. Ich möchte, dass diese Schüler mit 75% oder weniger rot und diejenigen mit 75% oder mehr grün ausgefüllt sind.

Ich kann anscheinend nicht herausfinden, wie dies in einer Weise funktioniert, die auf Änderungen in den Daten reagiert!

Vielen Dank im Voraus für jede Hilfe.

Antwort

0

Es gibt mehrere Lösungen für diese Frage.

Einer von ihnen wird mit barplot() in R.

Bitte versuchen Sie dies:

output$attendancerate <- renderPlot({ 
dataRead_bar<-mydata()[,c('Name',"Rate")] 
cols <- c("red", "green")[(dataRead_bar$Rate > 0.75) + 1] 
barplot(dataRead_bar[,c(2)], names = dataRead_bar$Name, 
     xlab = "Name", col=cols) 

}) 

Bitte lassen Sie mich wissen, wenn Sie Fragen haben! Ich kenne Ihren reaktiven Datensatz nicht, also habe ich nicht überprüft, ob mein Code funktioniert oder nicht, aber er sollte Ihnen einen Anhaltspunkt geben, um dieses Problem zu lösen.

+0

Vielen Dank für Ihre Antwort! Wenn ich den Code ausführe, bekomme ich nicht die Durchschnittswerte? – user7599268

Verwandte Themen