示例数据:
player <- c("a", "b", "a", "b", "c",
"a", "a", "b", "c", "b",
"c", "a", "c", "c", "a")
is.winner <- c(TRUE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, FALSE)
df <- data.frame(player, is.winner)
我的第一个图表大致长这样
ggplot(data=df, aes(x=player, y=as.numeric(is.winner))) +
geom_bar(stat="summary", fun.y=sum) +
coord_flip()
我希望做的是按照“TRUE”值的总和对df$player轴进行排序,使其看起来像这样:
我意识到我可以使用类似这样的东西:
df$player <- factor(df$player, levels=c("b", "a", "c"))
但实际数据中有更多的“玩家名称”。此外,我希望对胜率等内容进行类似处理。因此,自动排序将非常有用。以下是胜率示例。
df$is.winner <- factor(df$is.winner, levels=c("TRUE", "FALSE"))
df$player <- factor(df$player, levels=c("c", "b", "a"))
library(scales)
library(RColorBrewer)
ggplot(data=df, aes(x=player)) +
geom_bar(aes(fill=is.winner),position='fill')+
scale_y_continuous(labels=percent)+
scale_fill_brewer(palette="Set2") +
coord_flip()
x=reorder(player, df$is.winner=="TRUE", sum)
,因为总胜利次数并不一定意味着更高的胜率。这个问题有简单的解决方案吗? - tastycanofmalk