Ich habe folgende R-Code, um zu bestellen, wo ich die Daten transformieren und um sie dann nach einer bestimmten Spalte:Wie ggplot machen ein gestapeltes Balkendiagramm
df2 <- df %>%
group_by(V2, news) %>%
tally() %>%
complete(news, fill = list(n = 0)) %>%
mutate(percentage = n/sum(n) * 100)
df22 <- df2[order(df2$news, -df2$percentage),]
ich die bestellten Daten „df22“ anwenden möchten in ggplot:
ggplot(df22, aes(x = V2, y = percentage, fill = factor(news, labels = c("Read","Otherwise")))) +
geom_bar(stat = "identity", position = "fill", width = .7) +
coord_flip() + guides(fill = guide_legend(title = "Online News")) +
scale_fill_grey(start = .1, end = .6) + xlab("Country") + ylab("Share")
Leider ggplot gibt mir noch ein Grundstück ohne Bestellung:
Weiß jemand, was mit meinem Code falsch ist? Dies ist nicht das Gleiche wie ein Balkendiagramm mit einem einzelnen Wert pro Balken wie hier Reorder bars in geom_bar ggplot2 zu bestellen. Ich versuche, den Einkaufswagen nach einer bestimmten Kategorie eines Faktors zu sortieren. Insbesondere möchte ich Länder mit dem größten Anteil von Read News zuerst sehen. Hier
die Daten:
V2 news n percentage
1 United States News Read 1583 1.845139
2 Netherlands News Read 1536 1.790356
3 Germany News Read 1417 1.651650
4 Singapore News Read 1335 1.556071
5 United States Otherwise 581 0.6772114
6 Netherlands Otherwise 350 0.4079587
7 Germany Otherwise 623 0.7261665
8 Singapore Otherwise 635 0.7401536
ich verwendet, um die folgenden R-Code:
df2 <- df %>%
group_by(V2, news) %>%
tally() %>%
complete(news, fill = list(n = 114)) %>%
mutate(percentage = n/sum(n) * 100)
df2 <- df2[order(df2$news, -df2$percentage),]
df2 <- df2 %>% group_by(news, percentage) %>% arrange(desc(percentage))
df2$V2 <- factor(df2$V2, levels = unique(df2$V2))
ggplot(df2, aes(x = V2, y = percentage, fill = news))+
geom_bar(stat = "identity", position = "stack") +
guides(fill = guide_legend(title = "Online News")) +
coord_flip() +
scale_x_discrete(limits = rev(levels(df2$V2)))
Alles war in Ordnung, außer in einigen Ländern den Auftrag aus irgendeinem Grund brechen, und ich verstehe nicht, warum. Hier ist das Bild:
Was ich mit den Andeutungen von Jungs habe, habe ich "arrangieren" Befehl statt dplyr
df4 <- arrange(df2, news, desc(percentage))
Hier ist das Ergebnis:
Versuchen ein reproduzierbares Beispiel zu liefern. Wo ist dein data.frame 'df'? – aelwan
@aelwan Ich habe mehr als 100 Beobachtungen. Wie soll ich es hier hochladen? – Laura
@Jaap das ist eine ganz andere Frage von dem, was Sie in http://stackoverflow.com/questions/25664007/reorder-bars-in-geom-bar-ggplot2 – Laura