根据得分显示10条。
我想显示基于personal_score的10条。由于CH Gayle和AB de Villiers被重复两次,所以我只得到8个小节。但是我想根据得分以降序显示10个小节。
batsman individual_score
CH Gayle 175
BB McCullum 158
AB de Villiers 133
RR Pant 130
AB de Villiers 129
CH Gayle 128
M Vijay 127
DA Warner 126
V Sehwag 122
SR Watson 121
我尝试按降序重新排序,但不起作用。我也尝试过fill = score
并batsman
获得10酒吧。
highest_individual_score <- innings %>%
group_by(match_id,batsman) %>%
summarize(individual_score = sum(batsman_runs)) %>%
arrange(desc(individual_score)) %>%
ungroup() %>%
top_n(10, individual_score) %>%
ggplot(aes(x= batsman, y = individual_score,fill = batsman)) +
geom_bar(stat= "identity", show.legend = FALSE) +
theme(axis.text.x = element_text(angle = 90)) +
labs(x = "Batsman", y = "Individual Score", title ="Top 10 highest
individual scorer")
上面的代码按字母顺序仅给我8条。如何使其显示10条?
如果您尝试过类似的操作怎么办?使用您的代码,ggplot2
将它们分组在一起,因为x轴是batsman
,这确实使您着迷。但是,如果您将x轴做成一些与batsman
或都不相关的独特事物individual_score
呢?
我在下面通过为每一行赋予一个任意的唯一ID来完成此操作。我用过,row_number()
所以他们只是顺理成章地走了。然后,我将它们变成一个因子(而不是将它们保留为数字),以便它与刻度很好地配合使用。
library(tidyverse)
highest_individual_score <- innings %>%
group_by(match_id, batsman) %>%
summarize(individual_score = sum(batsman_runs)) %>%
arrange(desc(individual_score)) %>%
ungroup() %>%
top_n(10, individual_score) %>%
mutate(id = as.factor(row_number()))
然后,我对您的ggplot2
代码本身做了一些小的更改:
highest_individual_score %>%
ggplot(aes(x = id, y = individual_score, fill = batsman))+
geom_bar(stat = "identity", show.legend = FALSE)+
scale_x_discrete(
labels = highest_individual_score$batsman,
name = "Batsman"
) +
theme(axis.text.x = element_text(angle = 90))+
labs(y = "Individual Score", title ="Top 10 highest
individual scorer")
本质上,x轴现在是唯一的ID,因此它会分别处理每个记录。但是然后您必须用击球手重新标记轴,我使用的labels
参数来完成scale_x_discrete()
。说得通?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句