我的目标是比较各种社会经济因素(如多年收入)的分布情况,以了解人口在特定地区的演变情况,例如5年多。这方面的主要数据来自Public Use Microdata Sample。我使用R
+ ggplot2
作为我的首选工具。
在比较两年的数据(2005年和2010年)时,我有两个数据框hh2005
和hh2010
,其中包含两年的家庭数据。两年的收入数据存储在两个数据框中的变量hincp
中。使用ggplot2
我将创建个别年份的密度图,如下所示(2010年的例子):
p1 <- ggplot(data = hh2010, aes(x=hincp))+
geom_density()+
labs(title = "Distribution of income for 2010")+
labs(y="Density")+
labs(x="Household Income")
p1
如何在此图上叠加2005年的密度?我无法理解为data
已将hh2010
视为{{1}}我不知道如何继续。我应该从一开始就以一种根本不同的方式处理数据吗?
答案 0 :(得分:10)
您可以将data
个参数传递给各个geoms,因此您应该能够将第二个密度添加为这样的新geom:
p1 <- ggplot(data = hh2010, aes(x=hincp))+
geom_density() +
# Change the fill colour to differentiate it
geom_density(data=hh2005, fill="purple") +
labs(title = "Distribution of income for 2010")+
labs(y="Density")+
labs(x="Household Income")
答案 1 :(得分:1)
这就是我解决问题的方法:
例如:
# tag each data frame with the year^
hh2005$year <- as.factor(2005)
hh2010$year <- as.factor(2010)
# merge the two data sets
d <- rbind(hh2005, hh2010)
d$year <- as.factor(d$year)
# update the aesthetic
p1 <- ggplot(data = d, aes(x=hincp, fill=year)) +
geom_density(alpha=.5) +
labs(title = "Distribution of income for 2005 and 2010") +
labs(y="Density") +
labs(x="Household Income")
p1
^注意,当您使用因子时,'fill'参数似乎效果最好,因此我定义了年份。我还使用'alpha'参数设置重叠密度图的透明度。