bauen Ich versuche, eine Handlung, die die Kalorienzahl für verschiedene Arten von Sandwich durch Sandwich-Shop zeigt. I.e. wie viele Kalorien hat ein Veggie Sandwich bei Subway vs Jimmy Johns usw.Inkrementell einen Barplot in R
Ich mag würde dies als BarPlot visualisieren, dass
eine Bar für jedes Kaloriezählimpuls des Sandwiches
sichtbar Gruppen Sandwiches nach Typ: Veggie, Roastbeef usw., wo jede Gruppe nach den verschiedenen v aufgeteilt wird befürworten.
Meine Daten sieht wie folgt aus (für Reproduzierbarkeit Edited):
cleaninput <- data.frame ("type" = c("italian", "turkey", "roastbeef", "club", "veggie", "italian", "turkey", "roastbeef", "veggie"),
"vendor" = c("subway", "subway", "subway", "subway", "subway", "jimmyjohns", "jimmyjohns", "jimmyjohns", "jimmyjohns"),
"calories" = c(410,280,320,310,230,640,510,540,690))
Ich versuche wie so über die Daten zu durchlaufen, wo cleaninput
ist mein data.frame
:
#set up barplot
barplot(height = mean(cleaninput[['calories']]))
#iterate over sandwich types
for (t in levels(cleaninput[['type']]))
{
cat(t,"\n")
barplot(cleaninput[cleaninput[['type']]==t,][['calories']], add = TRUE)
}
Die Idee Zuerst den Barplot aufstellen und dann die Balken für jeden Sandwichtyp iterativ hinzufügen. I understood die Einstellung add
, um dies zu tun. Ich habe ähnliche Dinge mit regulären Plots gemacht, indem ich die lines
und points
Befehle verwendet und ein Beispiel unten reproduziert habe - das möchte ich in einen Barplot übertragen.
aber es funktioniert nicht, da es alle Bars auf der jeweils anderen (vgl Ausgang unten) zu Brei scheint.
Meine Fragen
(wie) kann ich dieses Problem beheben? Vorzugsweise würde ich lieber Base R als ggplot verwenden, um dies tragbarer zu machen.
Gibt es einen besseren Ansatz als
for
-loop?
Ich suchte nach gruppiert barplots bei tutorials aber nicht sehen, wie sie sich auf mein Problem übersetzt.
Stromausgang:
Bitte geben Sie Ihre Daten oder eine Teilmenge davon in einer verwendbaren Form - eine, die wir kopieren und einfügen können, ohne Formatierung vornehmen zu müssen z.B. durch Einfügen der Ausgabe von 'dput (cleaninput)'. Sie könnten stattdessen stattdessen ggplot2 lernen. http://www.sthda.com/english/wiki/ggplot2-barplots-quick-start-guide-r-software-and-data-visualization – Djork
@ R.S. Danke, ich dachte, mein Beispiel wäre kopierbar, aber es ist nicht und ich habe es durch ein korrektes ersetzt. Vielen Dank für die Vorschläge von ggplot, aber wie ich bereits sagte, würde ich gerne in Base arbeiten. – patrick