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

David Winsemius dwinsemius at comcast.net
Wed Oct 19 04:13:05 CEST 2011


On Oct 18, 2011, at 7:59 PM, swonder03 wrote:

> 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?

Change the order of the levels in a factor variable:

 > levels(df.m2$Var2)
[1] "Africa"   "Americas" "Asia"     "Europe"   "Oceania"
 > levels(df.m2$Var2) <- c("Europe", "Asia", "Americas" , "Africa"  ,   
"Oceania" )
 >

My efforts to replicate your code founded on the fact that your  
rename() operation seemed to have the wrong targets (or perhaps it is  
from a package you did not tell us about. (I did load rehape2.

-- 
david.

>
> /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.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list