r - ggpubr:按组排序,但排序顺序不同(asc,desc)
问题描述
我想按组对数据进行排序,然后为每个组按不同的顺序(升序、无、降序)排序,但似乎ggpubr
' 的sort.val
参数只取长度为 1 的值。我想知道我能做些什么替代方法在没有大量修改的情况下,输出是否达到了预期的结果?
我将使用mtcars
数据作为说明性示例。数据按cyl
组(3组)排序并按顺序呈现asc
,是否可以为三个组分配不同的排序顺序?比如说,“asc”、“none”、“desc”?(我试过c("asc", "none", "desc")
了,但没有用)。
下面是我的最小工作示例。
# Require the package
library(ggpubr)
data("mtcars")
dfm <- mtcars
# Convert the cyl variable to a factor
dfm$cyl <- as.factor(dfm$cyl)
# Add the name colums
dfm$name <- rownames(dfm)
# Inspect the data
head(dfm[, c("name", "wt", "mpg", "cyl")])
# Sort by group and by ascending order
ggbarplot(dfm, x = "name", y = "mpg",
fill = "cyl", # change fill color by cyl
color = "white", # Set bar border colors to white
palette = "jco", # jco journal color palett.
sort.val = "asc", # Sort the value in dscending order
sort.by.groups = TRUE, # Sort inside each group
x.text.angle = 90 # Rotate vertically x axis texts
)
解决方案
这是第一次数据操作的另一种方式:
- 第一列的行名
rownames_to_column
cyl
考虑因素sort
在使用 andifelse
语句分组后- 重要
arrange
的是cyl
library(tidyverse)
library(ggpubr)
dfm <- mtcars %>%
rownames_to_column("name") %>%
mutate(cyl = as_factor(cyl)) %>%
group_by(cyl) %>%
mutate(mpg=ifelse(cyl==4, sort(mpg), mpg),
mpg=ifelse(cyl==8, sort(mpg, decreasing = TRUE), mpg)
) %>%
arrange(cyl)
# plot
ggbarplot(dfm, x = "name", y = "mpg",
fill = "cyl", # change fill color by cyl
color = "white", # Set bar border colors to white
palette = "jco", # jco journal color palett.
x.text.angle = 90 # Rotate vertically x axis texts
)
推荐阅读
- python-3.x - 在 Ubuntu 中,为什么我在下载 python 的 usr/bin 时看不到特定版本?
- flutter - 未处理的异常:异常:请在颤动中提供 ShowCaseView 上下文
- c++ - 在 C++ 中,中位数模式程序中位数和模式部分不起作用
- python - 如何在散点图中以均匀间隔更改 x 轴值?
- excel - 使用 VBA 将行和列复制到新工作表
- python - 在空 DataFrame 上执行 .transform 时出现 ValueError
- sudo - 有没有办法修复 Fedora 上目录的所有权限?
- django - 如何在管理员中从('另一个')模型中注入数据?
- content-security-policy - 本地资源的内容安全策略
- algorithm - 边缘时间的图形算法 - 可以只有一个来源吗?