У меня есть пять строк, из которых я хочу вывести заштрихованную область, представляющую область между их построенными верхними и нижними областями. Я создаю R-скрипт (см. Ниже), поскольку у меня есть несколько наборов данных, для которых мне нужно повторить это упражнение.R ggplot2: наложение нескольких объектов geom_ribbon в одном графике с использованием вложенного цикла
Однако я могу печатать geom_ribbon из последней пары i и j - я не могу представить каждый geom_ribbon в созданный список.
Я благодарен за любые идеи о том, как импортировать все объекты geom_ribbon в список. Только один график печатается с print(Z)
(пример ниже). Я хотел бы, если возможно, все объекты geom_ribbon быть наложенными и напечатанными как один ggplot?
Z <- list()
allmaxi <- list(cahp_max_plot15cb$decade_maxa, cahp_max_plot15cb$decade_maxc,cahp_max_plot15cb$decade_maxd, cahp_max_plot15cb$decade_maxe, cahp_max_plot15cb$decade_maxf)
allmaxj <- list(cahp_max_plot15cb$decade_maxa, cahp_max_plot15cb$decade_maxc,cahp_max_plot15cb$decade_maxd, cahp_max_plot15cb$decade_maxe, cahp_max_plot15cb$decade_maxf)
for (i in allmaxi) {
for (j in allmaxj) {
l <- geom_ribbon(data=cahp_max_plot15cb,aes(x=decade,ymin=i, ymax=j))
Z[[length(Z) + 1]] <- l
print(i)
print(j)
}
}
print(ggplot() + Z)
Пример вывода (из печати (I) и печать (J) в скрипте) от ввода одного набора данных (decade_maxa), чтобы я список, и четыре других наборов данных в списке J:
[1] 2010.811 1723.783 1961.088 1662.909 1587.191 1662.140 1665.415 1602.974 1807.453 1586.106
[11] 1580.880 1685.253 1653.178 1824.842
[1] 1390.260 1247.700 1263.578 1711.638 1228.326 1762.045 1260.147 1171.914 1697.987 1350.867
[11] 1434.525 1488.818 1610.513 1536.895
`
`[1] 2010.811 1723.783 1961.088 1662.909 1587.191 1662.140 1665.415 1602.974 1807.453 1586.106
[11] 1580.880 1685.253 1653.178 1824.842
`
`[1] 1120.2700 1094.3047 1196.8792 1227.9660 1236.9170 1266.0935 1127.1480 974.6948 947.3365
[10] 1244.3242 1254.2704 1082.3667 1286.9080 1126.1943
`
`[1] 2010.811 1723.783 1961.088 1662.909 1587.191 1662.140 1665.415 1602.974 1807.453 1586.106
[11] 1580.880 1685.253 1653.178 1824.842
`
`[1] 1396.695 1425.073 1382.941 1913.495 1401.754 1499.763 1600.656 1367.043 1413.390 1343.804
[11] 1431.790 1402.292 1329.192 1696.729
`
`[1] 2010.811 1723.783 1961.088 1662.909 1587.191 1662.140 1665.415 1602.974 1807.453 1586.106
[11] 1580.880 1685.253 1653.178 1824.842
`
`[1] 1718.874 1389.134 1501.574 1233.189 1262.480 1508.919 1291.467 1431.869 1505.102 1376.519
[11] 1441.181 1421.552 1326.547 1635.599
`
> print(ggplot() + Z)
`
Это моя цель. Может быть, есть лучший способ с лапкой?
Это изображение, выведенное путем интегрирования медианные значения, как предложено ниже:
median_g <- group_by(cahp_max_plot15cbm,decade) median_gm <- mutate(median_g, median=median(value)) p2 <- ggplot(median_gm) + geom_ribbon(aes(x=decade, ymin=median,ymax=value,group=variable),alpha=0.40,fill="#3985ff") + geom_line(aes(x=decade,y=value,group=variable,color=variable),lwd=1) + geom_point(aes(x=decade,y=median)) p2
Оказывается имена переменных (только я и к) не передается в списке:> Z [[1]] отображение: х = декада, Ymin = я, YMAX = j geom_ribbon: na.тт = FALSE stat_identity: position_identity: (ширина = NULL, то высота = NULL) [[2]] отображение: х = десять лет, Ymin = я, утах = J geom_ribbon: na.rm = FALSE stat_identity: position_identity: (ширина = NULL, то высота = NULL) [[3]] отображение: х = десять лет, Ymin = я, утах = J geom_ribbon: na.rm = FALSE stat_identity: position_identity: (ширина = NULL, height = NULL) ... –
Зачем вам это нужно в цикле? Возможно, лучший подход - изменить ваши данные. Более читаемая и удобная настройка сюжета. – Heroka