我的数据框架如下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
我需要一个每年都有人名的条形图,但只有两种颜色,如绿色和红色。 一个例子如下:
所以在我的情况下:
barplot上的数字是人名,而不是蓝色,我需要红色和绿色。
答案 0 :(得分:3)
答案 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)