Tenho esses dados em R:
library(ggplot2)
library(dplyr)
set.seed(123)
data <- data.frame(
height = rnorm(1000, mean = 170, sd = 10),
weight = rnorm(1000, mean = 70, sd = 15),
country = sample(c("USA", "Canada", "UK", "Australia"), 1000, replace = TRUE)
)
Eu uso esse código para criar uma faceta de altura versus peso para cada país:
library(ggplot2)
library(gridExtra)
# Create separate plots for each country
p1 <- ggplot(data %>% filter(country == "USA"), aes(x = height, y = weight)) +
geom_point(alpha = 0.5) +
labs(title = "USA", x = "Height (cm)", y = "Weight (kg)") +
theme_minimal()
p2 <- ggplot(data %>% filter(country == "Canada"), aes(x = height, y = weight)) +
geom_point(alpha = 0.5) +
labs(title = "Canada", x = "Height (cm)", y = "Weight (kg)") +
theme_minimal()
p3 <- ggplot(data %>% filter(country == "UK"), aes(x = height, y = weight)) +
geom_point(alpha = 0.5) +
labs(title = "UK", x = "Height (cm)", y = "Weight (kg)") +
theme_minimal()
p4 <- ggplot(data %>% filter(country == "Australia"), aes(x = height, y = weight)) +
geom_point(alpha = 0.5) +
labs(title = "Australia", x = "Height (cm)", y = "Weight (kg)") +
theme_minimal()
grid.arrange(p1, p2, p3, p4, ncol = 2)
Existe alguma maneira em R que, em vez de criar manualmente todos esses gráficos, eu possa criar automaticamente cada gráfico com os títulos corretos e colocá-los lado a lado na mesma página?
No momento, estou fazendo isso manualmente e está demorando um pouco (por exemplo, tenho 20 gráficos desse tipo). Não é possível fazer isso automaticamente?
Se você não quiser facetas, o jeito é simplesmente escrever sua própria função de plotagem e aplicá-la aos dados. Por exemplo, assim:
Isso é generalizado: sempre que você se pegar escrevendo muito código muito parecido, você provavelmente deveria aplicar uma função.