это было опубликовано ранее в аналогичном стиле, но сейчас я исправил несколько вещей и, надеюсь, (!) Все стало ясно
Я пытался создать цикл для создания графиков для нескольких стран.
Мой фрейм данных: Plot_df
Вот выдержка из данных:
year country iso2 sector emissions
1990 Belgium BE ETS 0
1990 Belgium BE Regulated 78614107
1990 Belgium BE Unregulated 41870292
1991 Belgium BE ETS 0
1991 Belgium BE Regulated 79811521
1991 Belgium BE Unregulated 43733190
...
2011 Belgium BE ETS 46203056
2011 Belgium BE Regulated 61319344
2011 Belgium BE Unregulated 42839297
2012 Belgium BE ETS 43006980
2012 Belgium BE Regulated 58934979
2012 Belgium BE Unregulated 42459997
2013 Belgium BE ETS 45231176
2013 Belgium BE Regulated 58383554
2013 Belgium BE Unregulated 43586891
2014 Belgium BE ETS 43853144
2014 Belgium BE Regulated 56010346
2014 Belgium BE Unregulated 40380694
2015 Belgium BE ETS 44713916
2015 Belgium BE Regulated 57375031
2015 Belgium BE Unregulated 42854461
2016 Belgium BE ETS 43655728
2016 Belgium BE Regulated 56702848
2016 Belgium BE Unregulated 43540863
dput(head(Plot_df, 15))
доставляет это
structure(list(year = c("1990", "1990", "1990", "1990", "1990",
"1990", "1990", "1990", "1990", "1990", "1990", "1990", "1990",
"1990", "1990"), country = c("Austria", "Austria", "Austria",
"Belgium", "Belgium", "Belgium", "Bulgaria", "Bulgaria", "Bulgaria",
"Croatia", "Croatia", "Croatia", "Cyprus", "Cyprus", "Cyprus"
), iso2 = c("AT", "AT", "AT", "BE", "BE", "BE", "BG", "BG", "BG",
"HR", "HR", "HR", "CY", "CY", "CY"), sector = c("ETS", "Regulated",
"Unregulated", "ETS", "Regulated", "Unregulated", "ETS", "Regulated",
"Unregulated", "ETS", "Regulated", "Unregulated", "ETS", "Regulated",
"Unregulated"), emissions = c(0, 38264402.6689529, 24027827.7997971,
0, 78614106.9221497, 41870291.5153503, 0, 69103153.6445618,
9569791.66793823,
0, 17530229.1374207, 5911735.70632935, 0, 3135556.17528036, 1507499.48878214
)), row.names = c("378", "2836", "3100", "813", "8310", "8410",
"558", "16410", "16510", "438", "24510", "24610", "783", "3261",
"3271"), class = "data.frame")
Я только показал полные данные для одной страны, поскольку каждая страна выглядит одинаково (за исключением разных цифр Plot_df$emissions
)
То, что я хочу сделать, это (большинство вы увидите из моего кода ниже):
- создать цикл, поэтому графики будут созданы для всех стран
- ось х = год; y = выбросы (страны как в
Plot_df$country
)
- 3 группы (кривые) должны быть из сектора `Plot_df $: регулируемый, нерегулируемый, ETS
Регулируемый и нерегулируемый должен быть между 1990: 2016; ETS между 2005: 2017.
(эти годы являются годами доступности данных)
Вот что я пробовал:
# Sets up the loop to run from i=1 through a list of countries from vector
`Plot_df$country`
for(i in (1:length(unique(Plot_df$country)))){
# Color settings: colorblind-friendly palette
cols <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2",
"#D55E00", "#CC79A7")
# Plotting code where DATA, YEAR, etc need to be handed the right vectors
p <- ggplot() +
geom_line(Plot_df,aes(x=year,y=emissions,group=sector),
color=cols[1]) +
labs(x="Year",y="CO2 emissions",z="",title=paste("Emissions for",
country[i])) +
xlim(1990, 2016) +
ylim(-50,50) +
theme(plot.margin=unit(c(.5,.5,.5,.5),"cm"))
p
# Save plot, where the file name automatically gets a country name suffix
ggsave(p,filename=paste("./FILENAME",country[i],".png",sep=""),width=6.5,
height=6)
}
Я получаю эту ошибку и не могу понять, почему
Error: `data` must be a data frame, or other object coercible by
`fortify()`, not an S3 object with class uneval
Did you accidentally pass `aes()` to the `data` argument?
Есть идеи, почему это происходит?
Спасибо в любом случае