[R] Ordering of stack in ggplot (package ggplot2)

swonder03 ramey.steven at gmail.com
Wed Oct 19 01:59:30 CEST 2011


I'm trying to reproduce the 3rd graph on the page of this site:
http://learnr.wordpress.com/2009/03/17/ggplot2-barplots/ . However, the data
below produces a ggplot with the stacks sorted in alphabetical order from
the bottom up. I'd like the stacks to be in the order "Europe", "Asia",
"Americas, "Africa", "Oceania". Is there an easy way to manipulate ggplot or
geom_bar to do this? 

/library(ggplot2)
df <- structure(c(106487, 495681, 1597442,
				2452577, 2065141, 2271925, 4735484, 3555352,
				8056040, 4321887, 2463194, 347566, 621147,
				1325727, 1123492, 800368, 761550, 1359737,
				1073726, 36, 53, 141, 41538, 64759, 124160,
				69942, 74862, 323543, 247236, 112059, 16595,
				37028, 153249, 427642, 1588178, 2738157,
				2795672, 2265696, 11951, 33424, 62469,
				74720, 166607, 404044, 426967, 38972, 361888,
				1143671, 1516716, 160037, 354804, 996944,
				1716374, 1982735, 3615225, 4486806, 3037122,
				17, 54, 55, 210, 312, 358, 857, 350, 7368,
				8443, 6286, 1750, 7367, 14092, 28954, 80779,
				176893, 354939, 446792, 33333, 69911, 53144,
				29169, 18005, 11704, 13363, 18028, 46547,
				14574, 8954, 2483, 14693, 25467, 25215,
				41254, 46237, 98263, 185986), .Dim = c(19,
				5), .Dimnames = list(c("1820-30", "1831-40",
						"1841-50", "1851-60", "1861-70", "1871-80",
						"1881-90", "1891-00", "1901-10", "1911-20",
						"1921-30", "1931-40", "1941-50", "1951-60",
						"1961-70", "1971-80", "1981-90", "1991-00",
						"2001-06"), c("Europe", "Asia", "Americas",
						"Africa", "Oceania")))

df.m2 <- melt(df)
df.m2 <- rename(df.m2, c(X1 = "Period", X2 = "Region"))

a <- ggplot(df.m2, aes(x = Period, y = value/1e+06,
						fill = Region)) + opts(title = "Migration to the United States by
Source Region (1820-2006)") +
		labs(x = NULL, y = "Number of People (in millions)n",
				fill = "")
b <- a + geom_bar(stat = "identity", position = "stack")
b <- b + scale_fill_brewer(palette = "Set1")

immigration_theme <- theme_update(axis.text.x = theme_text(angle = 90,
				hjust = 1), panel.grid.major = theme_line(colour = "grey90"),
		panel.grid.minor = theme_blank(), panel.background = theme_blank(),
		axis.ticks = theme_blank(), legend.position = "right")

b/

Thanks in advance

--
View this message in context: http://r.789695.n4.nabble.com/Ordering-of-stack-in-ggplot-package-ggplot2-tp3917159p3917159.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list