神刀安全网

geom_lollipop() by the Chartettes

I make a fair share of bar charts throughout the day and really like switching to lollipop charts to mix things up a bit and enhance the visual appeal. They’re easy to do in ggplot2 , just use your traditional x & y mapping for geom_point() and then use (you probably want to call this first, actually) geom_segment() mapping the yend aesthetic to 0 and the xend aesthetic to the same thing you used for the x aesthetic. But, that’s alot of typing. Hence, the need for geom_lollipop() .

I’ll build this example from one provided by Stephanie Evergreen (that one’s in Excel). It’s not much code:

df <- read.csv(text="category,pct Other,0.09 South Asian/South Asian Americans,0.12 Interngenerational/Generational,0.21 S Asian/Asian Americans,0.25 Muslim Observance,0.29 Africa/Pan Africa/African Americans,0.34 Gender Equity,0.34 Disability Advocacy,0.49 European/European Americans,0.52 Veteran,0.54 Pacific Islander/Pacific Islander Americans,0.59 Non-Traditional Students,0.61 Religious Equity,0.64 Caribbean/Caribbean Americans,0.67 Latino/Latina,0.69 Middle Eastern Heritages and Traditions,0.73 Trans-racial Adoptee/Parent,0.76 LBGTQ/Ally,0.79 Mixed Race,0.80 Jewish Heritage/Observance,0.85 International Students,0.87", stringsAsFactors=FALSE, sep=",", header=TRUE)   # devtools::install_github("hrbrmstr/ggalt") library(ggplot2) library(ggalt) library(scales)   gg <- ggplot(df, aes(reorder(category, pct), pct)) gg <- gg + geom_lollipop(point.colour="steelblue", point.size=3) gg <- gg + scale_y_continuous(expand=c(0,0), labels=percent,                               breaks=seq(0, 1, by=0.2), limits=c(0, 1)) gg <- gg + coord_flip() gg <- gg + labs(x=NULL, y=NULL,                  title="SUNY Cortland Multicultural Alumni survey results",                 subtitle="Ranked by race, ethnicity, home land and orientation/namong the top areas of concern",                 caption="Data from http://stephanieevergreen.com/lollipop/") gg <- gg + theme_minimal(base_family="Arial Narrow") gg <- gg + theme(panel.grid.major.y=element_blank()) gg <- gg + theme(panel.grid.minor=element_blank()) gg <- gg + theme(axis.line.y=element_line(color="#2b2b2b", size=0.15)) gg <- gg + theme(axis.text.y=element_text(margin=margin(r=-5, l=0))) gg <- gg + theme(plot.margin=unit(rep(30, 4), "pt")) gg <- gg + theme(plot.title=element_text(face="bold")) gg <- gg + theme(plot.subtitle=element_text(margin=margin(b=10))) gg <- gg + theme(plot.caption=element_text(size=8, margin=margin(t=10))) gg

And, I’ll reiterate Stephanie’s note that the data is fake.

geom_lollipop() by the Chartettes

Compare it with it’s sister bar chart:

geom_lollipop() by the Chartettes

to see which one you think works better (it really does come down to personal aesthetics choice).

You can find it in the development version of ggalt . The API is not locked in yet so definitely provide feedback in the issues.

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » geom_lollipop() by the Chartettes

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮