У меня есть фрейм данных с 2 столбцами, один из которых представляет собой серию различных показателей, а другой просто указывает, является ли этот показатель для пациента с диабетом c или нет.
Я думаю, что следующий код генерирует соответствующие данные примера:
set.seed(42)
plotvfig <- data.frame(
diabetic_status = sample(c("diabetic", "none"), size=1000, replace=TRUE),
stringsAsFactors = FALSE
)
plotvfig$vfi_rate <- ifelse(plotvfig$diabetic_status == "diabetic", rnorm(1000), rnorm(1000, 2))
head(dat)
# diabetic_status vfi_rate
# 1 non-diabetic 1.398617002
# 2 non-diabetic 1.864183863
# 3 diabetic -0.002456267
# 4 non-diabetic 2.831925015
# 5 non-diabetic 1.204940484
# 6 non-diabetic 2.340464612
Я использовал следующий код для построения зеркальной гистограммы:
plotvfig=read_xlsx("/Users/jamilkabbani/BSc/data wrangling results/modelling plots.xlsx",sheet = 2)
ggplot(plotvfig, aes(x = vfi_rate)) +
geom_histogram(aes(y = ..count../sum(..count..)), fill = "gray", color = "black",
data = ~ subset(., diabetic_status == "diabetic")) +
geom_histogram(aes(y = -..count../sum(..count..)), fill = "gray60", color = "black",
data = ~ subset(., diabetic_status != "diabetic")) +
geom_hline(yintercept = 0) +
scale_y_continuous(name = 'Percent of Eyes', labels = scales::percent) +
scale_x_continuous(name = "Rate of VFI change (%/year)")
Я попытался добавить легенда с функцией легенды, но она либо не отображается, либо я получаю сообщение об ошибке
Error in strwidth(legend, units = "user", cex = cex, font = text.font) :
plot.new has not been called yet
В идеале хотелось бы, чтобы легенда отображалась чуть ниже или в стороне от графика, а не на это, как можно видеть здесь
Кроме того, я не совсем уверен, правильно ли моя гистограмма отображает проценты на оси у?