我想为每个方面添加不同的辅助轴。这是我的工作示例:
library(ggplot2)
library(data.table)
#Create the data:
data<-data.table(cohort=sample(c(1946,1947,1948),10000,replace=TRUE),
works=sample(c(0,1),10000,replace=TRUE),
year=sample(seq(2006,2013),10000,replace=TRUE))
data[,age_cohort:=year-cohort]
data[,prop_works:=mean(works),by=c("cohort","year")]
#Prepare data for plotting:
data_to_plot<-unique(data,by=c("cohort","year"))
#Plot what I want:
ggplot(data_to_plot,aes(x=age_cohort,y=prop_works))+geom_point()+geom_line()+
facet_wrap(~ cohort)
该图显示特定群体中有多少人在特定年龄工作。我想添加一个辅助x轴,显示哪个年份对应于不同群组的特定年龄。
答案 0 :(得分:1)
由于您具有要在数据集中使用的实际值,因此一种解决方法是将它们绘制为附加的geom_text
层:
ggplot(data_to_plot,
aes(x = age_cohort, y = prop_works, label = year))+
geom_point() +
geom_line() +
geom_text(aes(y = min(prop_works)),
hjust = 1.5, angle = 90) + # rotate to save space
expand_limits(y = 0.44) +
scale_x_continuous(breaks = seq(58, 70, 1)) + # ensure x-axis breaks are at whole numbers
scale_y_continuous(labels = scales::percent) +
facet_wrap(~ cohort, scales = "free_x") + # show only relevant age cohorts in each facet
theme(panel.grid.minor.x = element_blank()) # hide minor grid lines for cleaner look
您可以根据所需输出的尺寸来调整hjust
中的geom_text()
值和y
中的expand_limits()
值,以获得合理的外观。
(如果数据中缺少年份,则需要进行更多的数据处理,但我认为这里不是这种情况。)