I would like to do a climatographe or a climat chart using ggplot.
My data look like
> data.df
mese Temperatura.media pioggia
1 Jan -0.3 46.6
2 Feb 2.6 40.9
3 Mar 7.1 68.5
4 Apr 11.5 72.5
5 May 15.6 92.0
6 Jun 19.1 79.6
7 Jul 21.4 79.2
8 Aug 20.6 81.2
9 Sep 17.2 85.4
10 Oct 11.3 98.9
11 Nov 4.9 93.7
12 Dec 0.8 52.1
I have
data.df$mese<-month(data.df$mese, label = T)
climagg<-ggplot(data=data.df)+
geom_bar(aes(x=mese, y=pioggia),stat = "identity")
climagg
that give me
But I need have 2 axes one left and one right with different range (e.g. climatographe)... but it seem not easy with ggplot.
So the climat chart is may be easyer to do ... with non axes and using the multiplot fonction for ggplot
ggtheme<-theme(strip.text.x = element_text(size=14),
strip.text.y = element_text(size=14),
legend.title = element_text(size=14),
panel.background = element_blank()
)
pioggiagg<-ggplot(data=data.df)+
geom_bar(aes(x=mese.asdate, y=pioggia),stat = "identity",fill="#67a9cf")+
geom_text(aes(x=mese.asdate, y=pioggia+3, label=pioggia),size=4)+
theme(axis.text.y=element_blank(),
axis.title.y = element_blank(),
axis.ticks = element_blank(),
axis.title.x = element_text(face="bold", size=12))+
scale_x_discrete("")+
ggtheme
pioggiagg
tempgg<-ggplot()+
geom_bar(data=data.df,aes(x=mese.asdate, y=pioggia),stat = "identity",alpha=0)+
geom_bar(data=data.df,aes(x=mese.asdate, y=temp_max),stat = "identity",alpha=0)+
geom_bar(data=data.df,aes(x=mese.asdate, y=temp_mini),stat = "identity",alpha=0)+
geom_rect(data=data.df,stat = "identity",aes(xmin=mese-0.4, xmax=mese+0.4,ymin=temp_mini, ymax=temp_max),fill="#ef8a62")+
geom_text(data=data.df,aes(x=mese.asdate, y=temp_mini-3, label=temp_mini),size=4)+
geom_text(data=data.df,aes(x=mese.asdate, y=temp_max+3, label=temp_max),size=4)+
theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks = element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank())+
ggtheme
tempgg
multiplot(tempgg,pioggiagg,cols=1)
that give me