Я пытался создать цикл для создания графиков для нескольких стран.
Мой фрейм данных: EUETS_UN
Вот выдержка из данных:
year country iso2 sector emissions
1990 Belgium BE ETS 0
1990 Belgium BE Total 120484398
1990 Belgium BE Regulated 78614107
1990 Belgium BE Unregulated 41870292
1991 Belgium BE ETS 0
1991 Belgium BE Total 123544711
1991 Belgium BE Regulated 79811521
1991 Belgium BE Unregulated 43733190
1992 Belgium BE ETS 0
1992 Belgium BE Total 122657813
1992 Belgium BE Regulated 78283962
1992 Belgium BE Unregulated 44373851
1993 Belgium BE ETS 0
1993 Belgium BE Total 121557281
1993 Belgium BE Regulated 76752290
1993 Belgium BE Unregulated 44804991
1994 Belgium BE ETS 0
1994 Belgium BE Total 124938188
1994 Belgium BE Regulated 80647991
1994 Belgium BE Unregulated 44290197
1995 Belgium BE ETS 0
1995 Belgium BE Total 126082961
1995 Belgium BE Regulated 80518704
1995 Belgium BE Unregulated 45564257
1996 Belgium BE ETS 0
1996 Belgium BE Total 129583625
1996 Belgium BE Regulated 79513349
1996 Belgium BE Unregulated 50070276
1997 Belgium BE ETS 0
1997 Belgium BE Total 124046828
1997 Belgium BE Regulated 77308936
1997 Belgium BE Unregulated 46737892
1998 Belgium BE ETS 0
1998 Belgium BE Total 130285109
1998 Belgium BE Regulated 82610050
1998 Belgium BE Unregulated 47675059
1999 Belgium BE ETS 0
1999 Belgium BE Total 124745703
1999 Belgium BE Regulated 77595053
1999 Belgium BE Unregulated 47150650
2000 Belgium BE ETS 0
2000 Belgium BE Total 126794789
2000 Belgium BE Regulated 80435088
2000 Belgium BE Unregulated 46359701
2001 Belgium BE ETS 0
2001 Belgium BE Total 126129008
2001 Belgium BE Regulated 77255899
2001 Belgium BE Unregulated 48873109
2002 Belgium BE ETS 0
2002 Belgium BE Total 126444625
2002 Belgium BE Regulated 77914653
2002 Belgium BE Unregulated 48529972
2003 Belgium BE ETS 0
2003 Belgium BE Total 127953188
2003 Belgium BE Regulated 78464806
2003 Belgium BE Unregulated 49488382
2004 Belgium BE ETS 0
2004 Belgium BE Total 129040883
2004 Belgium BE Regulated 79430967
2004 Belgium BE Unregulated 49609916
2005 Belgium BE ETS 55363232
2005 Belgium BE Total 125638203
2005 Belgium BE Regulated 77343444
2005 Belgium BE Unregulated 48294759
2006 Belgium BE ETS 54775328
2006 Belgium BE Total 124030891
2006 Belgium BE Regulated 75869846
2006 Belgium BE Unregulated 48161044
2007 Belgium BE ETS 52795332
2007 Belgium BE Total 120611398
2007 Belgium BE Regulated 73189198
2007 Belgium BE Unregulated 47422201
2008 Belgium BE ETS 55462028
2008 Belgium BE Total 120659008
2008 Belgium BE Regulated 71854823
2008 Belgium BE Unregulated 48804185
2009 Belgium BE ETS 46206936
2009 Belgium BE Total 107642367
2009 Belgium BE Regulated 61048912
2009 Belgium BE Unregulated 46593455
2010 Belgium BE ETS 50103980
2010 Belgium BE Total 113582031
2010 Belgium BE Regulated 66648934
2010 Belgium BE Unregulated 46933097
2011 Belgium BE ETS 46203056
2011 Belgium BE Total 104158641
2011 Belgium BE Regulated 61319344
2011 Belgium BE Unregulated 42839297
2012 Belgium BE ETS 43006980
2012 Belgium BE Total 101394977
2012 Belgium BE Regulated 58934979
2012 Belgium BE Unregulated 42459997
2013 Belgium BE ETS 45231176
2013 Belgium BE Total 101970445
2013 Belgium BE Regulated 58383554
2013 Belgium BE Unregulated 43586891
2014 Belgium BE ETS 43853144
2014 Belgium BE Total 96391039
2014 Belgium BE Regulated 56010346
2014 Belgium BE Unregulated 40380694
2015 Belgium BE ETS 44713916
2015 Belgium BE Total 100229492
2015 Belgium BE Regulated 57375031
2015 Belgium BE Unregulated 42854461
2016 Belgium BE ETS 43655728
2016 Belgium BE Total 100243711
2016 Belgium BE Regulated 56702848
2016 Belgium BE Unregulated 43540863
Я только показал полные данные для одной страны, поскольку каждая страна выглядит одинаково (кроме разных цифр EUETS_UN$emissions
)
Я хочу сделать следующее (большинство вы увидите из моего коданиже):
- создать цикл, поэтому графики будут созданы для всех стран
- x axis = year;y = выбросы (для страны, как в
EUETS_UN$iso2
- 3 группы (кривые) должны быть от
EUETS_UN$sector
: регулируемые, нерегулируемые, ETS - регулируемые и нерегулируемые должны быть в период между 1990: 2016; ETS между 2005: 2017. Эти годы - годы с наличием данных
Вот что я пытался:
# Sets up the loop to run from i=1 through a list of countries from vector
'iso2'
for(i in (1:length(EUETS_UN$iso2))){
# 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(EUETS_UN$emissions,aes(x=year,y=emissions,group=sector),
color=cols[1]) +
labs(x="Year",y="CO2 emissions",z="",title=paste("TITLE for",iso2[i])) +
xlim(1990,max(year.aux)) +
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",iso2[i],".png",sep=""),width=6.5,
height=6)
}
Однако я получаю это сообщение об ошибке: data
должен быть фреймом данных или другим объектом, принудительно fortify()
, а не объектом S3 с классом unsval. Вы случайно передали aes()
аргументу data
? "
Любая идея, как я могзапустить цикл для создания графиков?
Спасибо в любом случае!
Nordsee