【发布时间】:2021-02-14 01:03:39
【问题描述】:
我有一些数据,这是其中的一个子集:
MyDataToSO <- data.frame(Age = c(2, 7, 12, 16, 21),
AgeGroup = c("0-4 years", "5-9 years", "10-14 years", "15-17 years", "18-24 years"),
Proportion = c(0.963, 0.965, 0.925, 0.701, 0.422))
我希望绘制数据,以便在 x 轴上获得相关的 AgeGroup 显示在 Age 刻度线下方。 Age 值是 AgeGroup 类别的中点。
我有我想要的情节,除了在 x 轴的相关部分下添加 AgeGroup 波段:
ggplot(data = MyDataToSO, aes(x = Age, y = Proportion)) +
geom_point() +
geom_point(data = subset(MyDataToSO, Age %in% c(16,21)), color = "green")
scale_x_continuous(breaks=seq(0, 30, by = 10)) +
labs(x = "Age group", y = "Proportion")
该图表有效,在正确的位置显示了相关的Age,但没有迹象表明Age 的值来自年龄组。
我认为通过在 x 轴上添加第二个标签来显示这一点会很有用,因此生成的 x 轴看起来有点像:
|
|______________________________...
| | | ...
2 7 12 ...
|__________|_________|_________|...
"0-4 years 5-9 years 10-14 years"...
我需要稍微调整一下字体大小才能使其正常工作。我还想让年龄组线条比正常打印更轻(例如,不透明比正常少 25%)。我在年龄组标签周围加上了引号,以阻止 SO 将每个数字显示为橙色数字。
如何将此信息添加到我的图表中?我搜索了二级标签,但只找到了与二级轴相关的问题。如您所见,所需的分组信息存储在AgeGroup 中,因此我“只”需要从那里提取相关值。
编辑:我加载了ggh4x 包,ggplot 代码现在是这样的:
ggplot(data = MyDataToSO, aes(interaction(Age, AgeGroup), Proportion)) +
geom_point() +
geom_point(data = subset(MyDataToSO, Age %in% c(16,21)), color = "green")
scale_x_continuous(breaks=seq(0, 30, by = 10)) +
guides(x = "axis_nested") +
labs(x = "Age group", y = "Proportion")
但它给出了一个错误,因为 x 轴是连续的。
编辑 2:绿点是插值。我现在有 17 到 20 岁的插值。但这些重复相同的 AgeGroup 标签。这是个问题吗?
【问题讨论】:
标签: r ggplot2 axis-labels