r - ggplot中带有填充的类别顺序
问题描述
我已经运行了这段代码:
#setup
library(tidyverse)
library(skimr)
library(scales)
#import data
tuesdata <- tidytuesdayR::tt_load('2021-05-25')
records <- tuesdata$records
records_tt <- records %>%
mutate(track = factor(track),
type = factor(type))
#let's create a boxplot
records_tt %>%
ggplot(aes(x=record_duration, y=track, fill=type)) +
geom_boxplot(alpha=0.6) +
theme_minimal() +
scale_x_continuous(labels = comma) +
labs(x = "Record duration", y = "") +
theme(
axis.title.x = element_text(
margin = margin(t = 15)),
legend.title = element_blank())
这给了我这个情节:
我有三个问题:
- 什么是
ggplot
用来决定将哪个级别type
放置在顶部(即为什么它当前绘制three lap
在顶部和single lap
底部)? - 如何在不更改图例键顺序的情况下翻转显示顺序(因为单列在三个之上是有意义的)?
- 如何重新排序从(独立于)
track
的最低平均值到最高平均值的值,而不是当前显示的默认反向字母顺序?record_duration
type
解决方案
- 对于问题 2:这是一个解决方案,借用这个解决方案
geom_boxplot
:使用以下行切换到的调用:
geom_boxplot(alpha=0.6, position=position_dodge2(reverse = T)) +
- 对于问题3:这是一个解决方案:
records_tt %>%
group_by(track) %>%
mutate(mean_duration = mean(record_duration)) %>%
ggplot(aes(x = record_duration, y = reorder(track, -mean_duration), fill = type)) +
geom_boxplot(alpha=0.6, position=position_dodge2(reverse = T)) +
theme_minimal() +
scale_x_continuous(labels = comma) +
labs(x = "Record duration", y = "") +
theme(
axis.title.x = element_text(
margin = margin(t = 15)),
legend.title = element_blank())
推荐阅读
- javascript - 带有“this”变量的抽象
- c# - MVVM 如何在 Canvas 中绑定 MouseLeftButtonDown 和 MouseLeftButtonUp
- python - 具有不同列的 Pandas concat 数据框:AttributeError:“NoneType”对象没有属性“is_extension”
- c# - 如何使用占位符继承 WPF UserControl?
- jquery - JQuery Validate 不适用于 Bootstrap Carousel 中的表单
- hive - 根据时区创建 hive 分区
- c# - 在一台Mac上输入电子邮件后Azure AD登录空白页,在另一台Mac上工作?
- zend-framework - 如何确定在编辑实体时更改的字段
- java - 华氏回华度和不回华度的方法
- python - 从 csv 读取项目并更新另一个 csv 中的相同项目