按频率排序 facet_wrap 个级别
ordering facet_wrap levels by frequency
我正在尝试为 F1 车手迄今为止赢得的冠军制作华夫饼图表。图表效果不错,但带有字母标签。我希望它从赢得最多的冠军到最少的冠军开始。
我试过排序和fct_relevel。但没有任何效果。下面是代码
ggplot(data = dfc, aes(fill=Champions, values=one)) +
geom_waffle(color = "cornsilk", size=0.25, n_rows=7)+
facet_wrap(~Champions, nrow = 3, strip.position = "bottom",labeller = label_wrap_gen(6))
这是
result我在找
你可以找到完整的代码here
数据集看起来像
Season Champions Team one
1 a x 1
2 a x 1
3 b y 1
4 a x 1
5 c z 1
这是一个使用 forcats
的解决方案(也是 tidyverse
包的一部分)。
fct_infreq()
根据数据中的频率对因子进行排序,您可以使用它来指定数据中水平的排序。
dfc$Champions <- factor(dfc$Champions, levels=levels(fct_infreq(dfc$Champions)))
ggplot(data = dfc, aes(fill=Champions, values=one)) +
geom_waffle(color = "cornsilk", size=0.25, n_rows=7) +
facet_wrap(~Champions, nrow = 3, strip.position = "bottom", labeller = label_wrap_gen(6))
我正在尝试为 F1 车手迄今为止赢得的冠军制作华夫饼图表。图表效果不错,但带有字母标签。我希望它从赢得最多的冠军到最少的冠军开始。
我试过排序和fct_relevel。但没有任何效果。下面是代码
ggplot(data = dfc, aes(fill=Champions, values=one)) +
geom_waffle(color = "cornsilk", size=0.25, n_rows=7)+
facet_wrap(~Champions, nrow = 3, strip.position = "bottom",labeller = label_wrap_gen(6))
这是 result我在找
你可以找到完整的代码here
数据集看起来像
Season Champions Team one
1 a x 1
2 a x 1
3 b y 1
4 a x 1
5 c z 1
这是一个使用 forcats
的解决方案(也是 tidyverse
包的一部分)。
fct_infreq()
根据数据中的频率对因子进行排序,您可以使用它来指定数据中水平的排序。
dfc$Champions <- factor(dfc$Champions, levels=levels(fct_infreq(dfc$Champions)))
ggplot(data = dfc, aes(fill=Champions, values=one)) +
geom_waffle(color = "cornsilk", size=0.25, n_rows=7) +
facet_wrap(~Champions, nrow = 3, strip.position = "bottom", labeller = label_wrap_gen(6))