我在使用ggplot2排序数据标签时遇到问题。
不幸的是,关于此主题的其他SE问答不是很有见识的(example),因此我不得不与reprex接触。我有以下数据:
df = as.data.frame(structure(list(geotype = c('urban','urban','urban','urban','suburban','suburban','suburban','suburban'),
limitations = c('all','some','all','some','all','some','all','some'),
metric = c('lte','lte','5g','5g','lte','lte','5g','5g'),
capacity=c(12,11,5,4,14,10,5,3))))
如果我随后尝试使用以下代码绘制此数据:
ggplot(df, aes(x = geotype, y = capacity, fill=metric)) + geom_bar(stat="identity") +
facet_grid(~limitations) +
geom_text(data = df, aes(geotype, capacity + 2, label=capacity), size = 3)
我得到了不正确的标签顺序:
我使用了年龄变量的排序方式(例如rev(capacity)),但无法解决该问题。谁能为整个SE社区提供有关如何处理标签订购的更全面的答案?
答案 0 :(得分:3)
您需要调用position
中的geom_text
参数,以将填充的美学数据与geom_bar
进行匹配,并让函数知道数据是堆叠的。
ggplot(df, aes(x = geotype, y = capacity, fill=metric)) +
geom_bar(stat="identity") +
geom_text(data = df, aes(geotype, capacity, label=capacity), size = 3, vjust = 2,
position = position_stack()) +
facet_grid(~limitations)
答案 1 :(得分:0)
像这样?位置堆栈。
g <- ggplot(df, aes(x = geotype, y = capacity, fill = metric, label =
capacity))
g + geom_col() + facet_grid(~limitations) +
geom_text(size = 3, vjust =3, position = position_stack())
答案 2 :(得分:0)