Не можете добавить легенду к зеркальной гистограмме в оси R и оси Y, возможно, неправильно отображая процент вместо плотности? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть фрейм данных с 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

В идеале хотелось бы, чтобы легенда отображалась чуть ниже или в стороне от графика, а не на это, как можно видеть здесь

Кроме того, я не совсем уверен, правильно ли моя гистограмма отображает проценты на оси у?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...