Как объединить Ecdf на вторичной оси ggplot с коробочками на первичной оси y - PullRequest
0 голосов
/ 27 апреля 2019

Моя цель - создать один график с датой посева на левой оси, днем ​​года цветения на горизонтальной оси и двумя графиками eCDF, нанесенными на правой оси.Таким образом, левая ось Y представляет собой шкалу даты, а правая ось Y находится в диапазоне от 0 до 1. Я знаю, что это можно сделать, используя обычные графики R, но я хочу использовать ggplot.

Я могу построить каждый ggplotпо отдельности.Но когда я пытаюсь объединить графики (коробочные графики и оба eCDF на одном графике), я получаю:

Ошибка в as.Date.numeric (value): необходимо указать 'origin'.

Проблемы с этой ошибкой и ggplot возникали в прошлом, но я не смог использовать эту информацию для решения своей проблемы.Данные во втором фрейме данных («логов») не отформатированы в датах (и не могут быть), но, похоже, R хочет, чтобы данные в логовах были преобразованы в даты для совместимости с первым фреймом данных («NhillCombs»).

Рад подробно изложить что-либо из вышеперечисленного (NhillCombs очень большой, поэтому я не вставил сюда все это).

# Plot boxplots:
p <- ggplot() + 
  geom_boxplot(data = NhillCombs,
               aes(x=SowingDate, y=flowering_doy, fill=cultivar, group=cultivarSowingDate), outlier.shape=1, outlier.size=1, notch=FALSE)+ 
  scale_fill_discrete(name = "Cultivars", labels = c("Alestar","Baudin","Buloke","Commander","Compass","Fathom","La Trobe","RGT Planet","Vlamingh","Westminster"))
p + coord_flip()  # Need this to switch x and y axes

# Add eCDFs to right vertical axis:
p + geom_line(data=dens,aes(x=x, y=cumsum(y)/sum(y)), size=0.7, colour='red') +
  geom_line(data=dens2,aes(x=x, y=1-(cumsum(y)/sum(y))),size=0.7, colour='blue') + theme_classic() + scale_x_continuous(name ="Day of year", breaks=seq(0,360,20), limits=c(200,365)) + scale_y_continuous(name ="Cumulative probability", sec.axis = sec_axis(trans = ~./max(NhillCombs$SowingDate))) + 
theme(axis.text.x = element_text(color="black"), axis.text.y = element_text(color="black"))
> head(NhillCombs$flowering_doy,20)
 [1] 266 246 257 276 231 236 249 247 263 239 239 238 261 262 256 236 261 238 266 233

> head(NhillCombs$cultivarSowingDate,20)
 [1] AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15
 [6] AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15
[11] AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15
[16] AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15 AlestarKeLiu.2019-04-15
70 Levels: AlestarKeLiu.2019-02-01 Baudin.2019-02-01 BulokeKeLiu.2019-02-01 CommanderKeLiu.2019-02-01 ... WestminsterKeLiu.2019-05-15

> head(NhillCombs$SowingDate,20)
 [1] "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15"
[10] "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15" "2019-04-15"
[19] "2019-04-15" "2019-04-15"

> head(dens,30)
          x            y
1  261.3000 0.0001349443
2  261.5474 0.0001439700
3  261.7947 0.0001536142
4  262.0421 0.0001635900
5  262.2894 0.0001743577
6  262.5368 0.0001856132
7  262.7841 0.0001973436
8  263.0315 0.0002099905
9  263.2789 0.0002230519
10 263.5262 0.0002369018
11 263.7736 0.0002515225
12 264.0209 0.0002665944
13 264.2683 0.0002828346
14 264.5157 0.0002996416
15 264.7630 0.0003171822
16 265.0104 0.0003358504
17 265.2577 0.0003550631
18 265.5051 0.0003754209
19 265.7524 0.0003966793
20 265.9998 0.0004185551
21 266.2472 0.0004419890
22 266.4945 0.0004660636
23 266.7419 0.0004911954
24 266.9892 0.0005176314
25 267.2366 0.0005447476
26 267.4840 0.0005734260
27 267.7313 0.0006030864
28 267.9787 0.0006336448
29 268.2260 0.0006659731
30 268.4734 0.0006990730

Boxplots:

Boxplots

Совокупные вероятностные графики:

Cumulative probability plots

...