我有以下要制作ggplot的data.frame:
> topmicegrn
Topic Antigen n tc
0 BCP 0.350533878 25193
0 HEL 0.344341682 25193
0 OVA 0.194974795 25193
0 RSV 0.110149645 25193
1 BCP 0.453020134 298
1 HEL 0.228187919 298
1 OVA 0.318791946 298
10 BCP 0.979310345 145
10 OVA 0.013793103 145
10 HEL 0.006896552 145
...
情节看起来像这样的atm:
ggplot(topmicegrn, aes(Topic, n, label=tc)) +
geom_bar(stat = "identity", aes(fill = Antigen)) +
geom_text(stat='identity', position = 'stack') +
scale_fill_brewer(palette="YlGnBu") +
coord_flip()
现在,我想仅在每个小节的末尾保留“ tc”标签(因此,每个“主题”保留一个标签),并消除每个堆栈上的标签。我尝试使用geom_text(aes(group=Topic))
,但结果与图相同。
此外,并非每个“主题”都包含每个“抗原”,而且顺序也很混乱(“主题”列是我按特定顺序排序的一个因素),因此使用these solutions不起作用为了我。有什么想法吗?
答案 0 :(得分:0)
数据集不完整,但这可能有效。 您似乎在跨行重复了tc,因此需要过滤掉重复项。 您可以通过仅使用该数据创建另一个更简单的数据框来做到这一点
这是一种实现方式:
library(tidyverse)
topmicegrn <-
read.table(text=
"Topic Antigen n tc
0 BCP 0.350533878 25193
0 HEL 0.344341682 25193
0 OVA 0.194974795 25193
0 RSV 0.110149645 25193
1 BCP 0.453020134 298
1 HEL 0.228187919 298
1 OVA 0.318791946 298
10 BCP 0.979310345 145
10 OVA 0.013793103 145
10 HEL 0.006896552 145",
header = T, stringsAsFactors = F)
topmicegrn_tc <-
topmicegrn %>%
group_by(Topic) %>%
summarise(tc = max(tc))
ggplot(topmicegrn, aes(Topic, n)) +
geom_bar(stat = "identity", aes(fill = Antigen)) +
scale_fill_brewer(palette="YlGnBu") +
coord_flip() +
geom_text(data = topmicegrn_tc,
aes(x= Topic, y = 1, label= tc),
stat='identity', hjust = 1)
由reprex package(v0.2.1)于2018-11-13创建