r - fct_reorder/ggplot2 没有按要求排序
问题描述
我正在处理最新的 TidyTuesday 数据,但我的情节中有问题。新泽西州显示在纳什维尔上方,尽管纳什维尔总体上具有更多价值。我不确定如何解决这个问题。
我认为这与用户 etmckinley 的一条推文首先在纳什维尔排序有关,因为它按字母顺序排在用户名 sqlsekou 之前。也许有一种方法可以逆转排序并使其正常工作?
如果没有,我还能如何正确订购数据以使纳什维尔高于新泽西州?
library(tidyverse)
tweets <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-06-15/tweets.csv')
top_states <- tweets %>%
filter(
location != "iPhone: 34.704040,-86.722909",
location != "Kevin.Elder@GCSU.edu"
) %>%
drop_na(location) %>%
count(location, sort = TRUE) %>%
slice_max(n, n = 7) %>%
pull(location)
tweets %>%
filter(
location != "iPhone: 34.704040,-86.722909",
location != "Kevin.Elder@GCSU.edu"
) %>%
drop_na(location) %>%
count(location, username, sort = TRUE) %>%
filter(location %in% top_states) %>%
mutate(location = fct_reorder(location, n)) %>%
mutate(username = fct_reorder(username, -n)) %>%
ggplot(aes(n, location, fill = username)) +
geom_col() +
scale_fill_brewer(palette = "Set3") +
labs(
x = "Quantity of tweets",
y = "Location",
title = "Tweets by location over 3 month period",
subtitle = "Filled by username"
)
解决方案
默认情况下,fct_reorder
按中值重新排序。您的纳什维尔条形图有 2 个组件,一个大,一个小,中间值介于两者之间。您的 NJ 条只有一个分量,因此中位数是完整值。fct_reorder
通过设置覆盖默认值.fun = sum
。有关?fct_reorder
更多详细信息,请参阅。
推荐阅读
- java - onUpgrade Android 中没有添加新列?
- javascript - v-for 中的 el-popover,每行只打开一个 popover
- laravel - 主机中的 Symfony\Component\HttpKernel\Exception\HttpException 错误
- c# - 运行单元测试的起点是什么?
- sql - 如何在bigquery中计算购买历史的日期频率
- java - Retrofit 2 onResponse 填充另一个类中的对象
- css - 在列中垂直居中图像
- ios - 自动布局 - 如何分配内容以按比例填充屏幕
- python - 熊猫对重复值进行排名
- c# - 使用 IHostedService 检查数据库