Wenn dupliziert, bitte zeigen Sie mir die ursprüngliche Frage.ggplot2 zeichnen Grafik in Bezug auf eine bestimmte Reihenfolge
Ich möchte eine Abbildung in R mit ggplot2 zeichnen, und die folgenden Codes zeigen, was ich erreichen möchte.
require(ggplot2)
require(data.table)
set.seed(1)
dat <- data.table(time = rep(c(1:40), times = 5),
value = runif(200),
team = rep(c("A","B","C","D","E"), each = 40))
dat[, value := value/sum(value), by = .(time)]
ggplot(dat, aes(x = time, y = value, group=team, fill=team)) +
geom_area(position = "fill") +
scale_fill_manual(values = c("red","blue","green","pink","yellow"),
breaks = c("D", "B", "E", "A", "C"),
labels = c("D", "B", "E", "A", "C"))
ggplot2 Ausgang:
Wie Sie sehen können, ist die Reihenfolge der Figur nicht die Reihenfolge der Legende entsprechen. Es ist die Reihenfolge von A, B, C, D, E, aber nicht D, B, E, A, C. Ich möchte die Figur mit rosa an der Spitze, dann blau, dann gelb, dann rot, dann zeichnen grün (DBEAC). Wie kann ich das erreichen?
Vielen Dank im Voraus!
zu lösen Wenn Sie die scale_manual auslassen, die Aufträge die gleichen sind. –
Oder, wenn die Reihenfolge aus irgendeinem Grund wichtig ist. Ordne die Faktorvariable neu an. Etwas wie 'df $ team <- Faktor (df $ team, levels = c (" D "," B "," E "," A "," C "))'. Dann grafisch darstellen. – lmo
Wenn Sie das Argument "Breaks" für scale_manual weglassen, ist die Reihenfolge auch so, wie Sie es wünschen. Ich kann fast nie sagen, ob solche Anomalien Bugs oder beabsichtigtes Verhalten sind, weil die Hilfeseiten für ggplot2-Funktionen selten genug über die akzeptablen Werte von Parametern oder deren Auswirkungen sagen. –