ggplot的Molten数据中的标识符

时间:2012-09-29 22:48:52

标签: r casting ggplot2 melt

我在id.vars中与melt()进行了一些讨论,以及如何使其与ggplot()一起使用。

假设自1970年以来我按种族,年龄和性别获得了加州人口数据:

ca1970_1989<-read.table(
 url('http://www.dof.ca.gov/research/demographic/data/race-ethnic/1970-89/documents/California.txt'),  
header=F,strip.white=TRUE,stringsAsFactors=T)
names(ca1970_1989)<-c('County name','Year','Sex','Age','Total Population','White Population','Hispanic Population','Asian & Pacific Islander Population','Black Population','American Indian Population')

我暂时不需要年龄,所以我总结一下。

ca1970_1989.agg<-aggregate(ca1970_1989[,6:10],by=list(ca1970_1989$Sex,ca1970_1989$Year),FUN=sum)

我想用ggplot()绘制它,所以我融合了:

ca1970_1989.m<-melt(ca1970_1989.agg, id.vars=c('Group.1','Group.2')) names(ca1970_1989.m)[1:2]<-c('Sex','Year')

> head(ca1970_1989.m)
     Sex Year         variable   value
1 FEMALE 1970 White Population 7845344
2   MALE 1970 White Population 7635379
3 FEMALE 1971 White Population 7848106
4   MALE 1971 White Population 7626582
5 FEMALE 1972 White Population 7827480
6   MALE 1972 White Population 7597465

我想传递给ggplot,但要让它正确地知道实际上有一个额外的标识符(性别),因此它可以区分男性和女性的价值。

如果我这样做,我就不会捕获Sex分组。

ggplot(ca1970_1989.m, aes(x=Year, y=value, group=variable), colour=variable)) +
geom_line()

我应该使用castvariable成为性别和种族的组合吗?我应该首先对melt()参数使用id.vars吗?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

您可以将两个因素“性别”和“变量”与冒号合并在一起,如下所示:

ggplot(ca1970_1989.m, aes(x=Year, y=value, group=variable:Sex),color=variable) + geom_line()

这对我有好几次了。但我对R很新,所以它可能也被认为是坏的风格。