R ggplot barplot,上面有人的名字

时间:2015-10-18 07:50:25

标签: r ggplot2

我的数据框架如下4年:

State        Sex Year     Name   Percent
Arizona      M    1962     John   0.3
Arizona      F    1962     Mary   0.6  
Arizona      M    1963     Peter  0.4
Arizona      F    1963     Jane   0.9
Arizona      M    1964     Dave   0.7 
Arizona      F    1964     Lara   0.3
Arizona      M    1965     Den    0.7 
Arizona      F    1965     Kate   0.2

我需要一个每年都有人名的条形图,但只有两种颜色,如绿色和红色。 一个例子如下:

enter image description here

所以在我的情况下:

  • x轴是年
  • y轴是百分比

barplot上的数字是人名,而不是蓝色,我需要红色和绿色。

2 个答案:

答案 0 :(得分:3)

您可以使用we r sameggplot内完成所有操作以放置文本。关键是使用stat_summary获取y位置。

cumsum

enter image description here

答案 1 :(得分:2)

这是一个解决方案。唯一的问题是文本标签的位置:您必须事先计算它们。我的解决方案假设一年只有两次观察,他们先命名为M,F秒。

txt <- readLines(n=9)
State        Sex Year     Name   Percent
Arizona      M    1962     John   0.3
Arizona      F    1962     Mary   0.6  
Arizona      M    1963     Peter  0.4
Arizona      F    1963     Jane   0.9
Arizona      M    1964     Dave   0.7 
Arizona      F    1964     Lara   0.3
Arizona      M    1965     Den    0.7 
Arizona      F    1965     Kate   0.2
df <- read.table(text=txt,head=TRUE,stringsAsFactors = FALSE)

library(ggplot2)
library(dplyr)

df <- group_by(df,Year) %>% 
  mutate(pos=ifelse(Sex=="M",Percent,Percent+lag(Percent)))

ggplot(df,aes(x=Year,label=Name,fill=Sex)) +
  geom_bar(aes(y=Percent),stat="identity",position="stack") +
  geom_text(aes(y=pos),vjust=1)

enter image description here