提问人:Joe the Second 提问时间:10/5/2023 更新时间:10/5/2023 访问量:19
当我已经为我的列定义网格时,如何向 facet_grid() 添加更多行?
How to add more rows to facet_grid() when I am already defining grids for my column?
问:
我有以下数据集:
set.seed(7736)
categories <- rep(LETTERS[1:11], each = 30)
values <- sample(50:200, 330, replace = T)
df <- data.frame(category = categories, values = values)
我正在创建以下图表:
graph_builder <- function(data_set, y_axis_parameter, category, attribute_name) {
data_set <- data_set |>
mutate(x = row_number(), .by = {{ category }})
graph <- ggplot(data_set, aes(
x = x,
y = {{ y_axis_parameter }}, colour = {{ category }},
group = 1
)) +
geom_line() +
geom_point() +
facet_grid(cols = vars({{ category }}), scales = "free_x") +
ylab(paste0(attribute_name, " Measured Values")) +
xlab("Data Points") +
labs(title = paste0(attribute_name)) +
theme(plot.title = element_text(hjust = 0.5)) +
theme(legend.position = "none")
graph
}
正如你所看到的,我的网格是类别。
我想做的不是将所有数据显示在一行中,而是希望有 2 或 3 行,这样图表的可读性更强。当我传递给 facet_grid() 时,我收到错误,行数必须为“NULL”。nrows= 2
问题:有没有一个参数可以传递给 facet_grid() 自动将我的数据拆分为更多行(比如 2 或 3)。如您所见,在上图中,我有 11 个组,因此如果我选择有两行,那么其中一行必须显示更多类别(第一行 6 个类别,第二行 5 个类别)。或者,如果我想在 3 行中显示数据,那么 11 不能被 3 整除,我不知道 facet_grid() 是否能够完成我正在寻找的操作。任何帮助将不胜感激。
答:
2赞
Till
10/5/2023
#1
您可以使用代替 .它会自动
选择一个
合理比例
列到行。facet_wrap()
facet_grid()
library(tidyverse)
graph_builder <- function(data_set, y_axis_parameter, category, attribute_name) {
data_set <- data_set |>
mutate(x = row_number(), .by = {{ category }})
graph <- ggplot(data_set, aes(
x = x,
y = {{ y_axis_parameter }}, colour = {{ category }},
group = 1
)) +
geom_line() +
geom_point() +
facet_wrap(vars({{category}}), scales = "free_x") +
ylab(paste0(attribute_name, " Measured Values")) +
xlab("Data Points") +
labs(title = paste0(attribute_name)) +
theme(plot.title = element_text(hjust = 0.5)) +
theme(legend.position = "none")
graph
}
df |>
graph_builder(values, category, "blargh")
df |>
filter(category %in% LETTERS[1:5]) |>
graph_builder(values, category, "blargh")
评论