#r #ggplot2
#r #ggplot2
Вопрос:
Я готовлю описательные графики своих данных и столкнулся с конкретной проблемой. Для каждого бокс-графика я показываю количество наблюдений (не спрашивайте меня почему, поэтому они просто хотят этого = D). Если я использую только два параметра в ggplot, проблемы нет. Однако, когда я добавляю параметр эстетического цвета для пола в график. Текст начинает перекрываться или просто размещается между boxplot. Мне кажется, что обязательно нужно добавить новый параметр к функциям (начало кода), которые создали автоматическую позицию сводного текста статистики. Эти новые параметры смогут перемещать текст по оси x влево или вправо, в зависимости от эстетической категории цвета. Но не уверен, как это сделать
# data
df <- data_frame(id = c(1:50),
sex = sample(1:2, 50, replace=T),
age = sample(18:50, 50, replace=T),
state = sample(state.name[1:4], 50, replace=T))
# auto positioning function
give.n <- function(x){
return(c(y = median(x)*1.05, label = length(x)))
# experiment with the multiplier to find the perfect position
}
# plot
ggplot(df, aes(x= as.factor(state), y = age, color = as.factor(sex)))
geom_boxplot()
stat_summary(fun.data = give.n, geom = "text", fun.y = median)
Ответ №1:
Это можно исправить с помощью position
аргумента, т.Е. Добавить position = position_dodge(width = .75)
к stat_summmary
:
# data
set.seed(42)
df <- data.frame(id = c(1:50),
sex = sample(1:2, 50, replace=T),
age = sample(18:50, 50, replace=T),
state = sample(state.name[1:4], 50, replace=T))
# auto positioning function
give.n <- function(x){
return(c(y = median(x)*1.05, label = length(x)))
# experiment with the multiplier to find the perfect position
}
library(ggplot2)
# plot
ggplot(df, aes(x= as.factor(state), y = age, color = as.factor(sex)))
geom_boxplot()
stat_summary(fun.data = give.n, geom = "text", fun.y = median, position = position_dodge(width = .75))
#> Warning: `fun.y` is deprecated. Use `fun` instead.
Комментарии:
1. Ty @stefan, и, конечно же! Я все еще думаю о каком-то сложном решении и забыл указать аргумент (facepalm)
2. ((: Это иногда случается. (;