我有一个名为“ year”的表,如下所示:
# Year Stars n pct
1 2015 1 778 26.5
2 2015 2 247 8.4
3 2015 3 286 9.7
4 2015 4 439 15
5 2015 5 1186 40.4
6 2016 1 678 22.7
7 2016 2 233 7.8
8 2016 3 256 8.6
9 2016 4 451 15.1
10 2016 5 1372 45.9
11 2017 1 501 24.3
12 2017 2 180 8.7
13 2017 3 215 10.4
14 2017 4 274 13.3
15 2017 5 894 43.3
16 2018 1 391 25.1
17 2018 2 125 8
18 2018 3 144 9.3
19 2018 4 196 12.6
20 2018 5 699 45
21 2019 1 474 22.4
22 2019 2 124 5.9
23 2019 3 168 8
24 2019 4 277 13.1
25 2019 5 1070 50.6
26 2020 1 148 25.3
27 2020 2 50 8.5
28 2020 3 64 10.9
29 2020 4 77 13.1
30 2020 5 247 42.2
数据代表用户多年来一直在评价Google Play商店中的应用。他们通过给1(坏)到5(大)星评级。我正在尝试使用此代码制作一张图表,按星级和年份显示星星的份额:
ggplot(year, aes(as.factor(Stars), pct)) +
geom_bar(aes(fill = as.factor(Year)), position = "dodge", stat="identity") +
scale_fill_manual(values=c("#05668D", "#028090", "#00A896", "#02C39A", "#4ecdc4", "#F0F3BD")) +
ylab("Share of stars (in %)") +
xlab("Stars") +
geom_text(label=round(year$pct, digits = 1),
position=position_dodge(0.9),
size = 4, fontface = "bold") +
ylim(0,50) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"),
plot.title = element_text(hjust = 0.5)) +
ggtitle("Share of stars")
[不幸的是,我遇到两个问题:1)由于某种原因,我收到以下警告消息:警告消息:
1: Removed 1 rows containing missing values (geom_bar).
2: Removed 1 rows containing missing values (geom_text).
意味着该数据为2020年,缺少4星,尽管它应该为13.12)我的标签到处都是,但我希望它们位于图表上相应列的上方。
有人可以帮我解决这个问题吗?
只需使用position_dodge2
固定标签并摆脱ylim
即可显示所有数据:
library(ggplot2)
ggplot(year, aes(as.factor(Stars), pct)) +
geom_bar(aes(fill = as.factor(Year)), position = "dodge", stat="identity") +
scale_fill_manual(values=c("#05668D", "#028090", "#00A896", "#02C39A", "#4ecdc4", "#F0F3BD")) +
ylab("Share of stars (in %)") +
xlab("Stars") +
geom_text(aes(label=round(pct, digits = 1)),
position=position_dodge2(0.9),
size = 4, fontface = "bold") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"),
plot.title = element_text(hjust = 0.5)) +
ggtitle("Share of stars")