按ggplot中的值总和对条形图进行排序

美味的

示例数据:

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()

您可以使用reorderwhich是根据某些谓词重新排序因子水平的函数。

ggplot(data=df, aes(x=reorder(player, is.winner, function(x){ sum(x) }), 
                    y=as.numeric(is.winner))) +
geom_bar(stat="summary", fun.y=sum) +
coord_flip()

在此处输入图片说明

reorder(x, X, FUN) 需要

  • x,重新排序的因素。
  • X与长度相同的向量x此向量将被划分为每个级别的子集,并传递给函数FUN
  • FUN应用于每个级别子集的功能。该函数应采用一个向量并返回一个标量,该标量将用于对因子水平进行排序。

在您的最后一个示例中,您需要再次将向量转换为布尔值,以便对其求和:

df$is.winner <- factor(df$is.winner, levels=c("TRUE", "FALSE"))

ggplot(data=df, aes(x=reorder(player, df$is.winner=="TRUE", sum), fill=is.winner)) +
  geom_bar(position='fill') +
  scale_y_continuous(labels=percent) +
  scale_fill_brewer(palette="Set2") +
  xlab("player") + 
  coord_flip()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

堆叠的条形图,按总数(值的总和)而不是值ggplot2 + dplyr重新排序

在ggplot条形图R中按特定年份对变量进行排序

ggplot基于数据框中的值对堆叠的条形图进行重新排序

通过matplotlib中的列表值对条形图进行排序

堆叠条形图ggplot2-按特定变量对样本进行排序,从最高到最低

ggplot无法重新排序时对条形图进行排序

如何在charts.js中的特定条形值上对堆积条形图进行排序

如何按降序对堆积条形图进行排序?

如何按物种总数对这个条形图进行排序?

在使用 ggplot2 打印为条形图之前按 R 中的数字排序

在 R 中按比例或百分比对堆积条形图进行排序

在 Python 中为分组条形图按特定顺序对 x 轴进行排序

根据ggplot中的两个条件对条形图进行排序

R-使用ggplot2在函数中对条形图进行重新排序

如何在R中从最高到最低对条形图进行排序?(ggplot2)

按值ggplot2订购条形图

对已按降序分组的条形图值进行排序

根据Tableau中的值(从最高到最低)对堆积的条形图进行排序

当条形按 ggplotly 中的值排序时,如何在条形图工具提示上显示变量名称

ggplot2堆叠条形图:按多个维度对条形重新排序

如何对矩阵的条形图进行排序?

如何在ggplot的条形图上的单个条形图中按值正确地对分段进行排序(即使从因子更改)

第2部分:如何在ggplot的条形图上的单个条形图中按值正确地对分段进行排序

Plotly 中的列总和条形图

熊猫堆积条形图与排序的值

根据 y 的值排序条形图

按值类别绘制条形图

R:按条形图的值分组

在ggplot2的堆叠条形图的顶部显示每个组的总计(总和)值