#r #ggplot2 #plot
Вопрос:
Я хочу построить график в R с помощью функции ggplot (), подобной этой,
У меня есть этот код:
ggplot(inc, aes(age, num, fill = sex))
geom_bar(stat = "identity", position = "dodge",color="black",width = 0.6)
geom_errorbar(aes(ymin=num-se, ymax=num se), width=.3,
position=position_dodge(.6))
theme_classic()
theme(legend.position="top",
legend.justification="left")
scale_fill_brewer(palette = "Pastel1", limits = c("Female", "Male"))
labs(x = "Age (years)", y="Incident cases")
geom_ribbon(data=inc,aes(ymin =lowerrate, ymax = upperrate), alpha =0.3)
geom_line(data=inc,aes(age,rate, group = sex ))
scale_y_continuous(sec.axis = sec_axis(~(./atrisk)*100000, name = "secondary axis"))
но в результате получается картинка ниже:
Может ли кто-нибудь объяснить, почему линейный график и вторичная ось Y не отображаются на графике? (В sec_axis() я использую переменную atrisk, и ошибка связана с немонотонным преобразованием.)
Как я могу устранить эту проблему?
Комментарии:
1. Вы пропускаете перед последней строкой кода
2. Спасибо. Да, я совершил ошибку. Но после добавления перед последней строкой кода я столкнулся с этой ошибкой. (Ошибка в f(…) : объект ‘atrisk’ не найден), потому что я использовал переменную «atrisk» в sec_axis(). Можем ли мы добавить вторую ось Y без монотонного преобразования первой оси?
3. Можете ли вы предоставить набор данных, так как его трудно реплицировать без данных. Вы также можете просто привести несколько строк.
4. Да, конечно! мои данные представлены в следующем формате: inc=данные.кадр( возраст=c(«от 15 до 19″,»от 15 до 19″,»от 20 до 24″,»от 20 до 24»,…, «>=95″,»>>=95″),пол=c(«M»,»F»,»M»,»F»,…,»M»,»F»), число=c(138,43, 97,51,…), скорость=c(0.04,0.03,0.09,…), atrisk=c(317782109.1,301758869, …))
5. В sec_axis() переменная второй оси Y должна быть монотонным преобразованием переменной первой оси Y (num). Здесь переменная второй оси имеет функцию num, как вы видите в последней строке кода. (число/atrisk)*100000.