Multiplot mit ggplot
Verfasst: Sa Mär 31, 2018 6:38 pm
Hallo zusammen,
ich habe folgendes Problem, bei dem ich hoffe, einer von euch kann mir weiterhelfen.
In meinem Datensatz habe ich einmal Temperatur-Daten, sowie Niederschlag und relative Feuchte. Diese würde ich gerne in einem Plot zusammen fassen mit gleicher x-Achse, und unterschiedlichen Y-Achsen
Ich arbeite mit ggplot und weiß, man kann mit facet_grid beispielsweise die Plots horizontal oder vertikal anorden.
Das funktioniert auch mit unterschiedlichen Graphikparametern wie geom_line und geom_bar ganz wunderbar.
Allerdings, würde ich gerne den Niederschlag (PCP) und die Temperatur (Mean) in EINEN Plot packen mit unterschiedlichen y-Achsen. Und "drüber" als eigenen Plot und eigener Y-Achse aber identischer X-Achse die relative Feuchte (rH).
Folgendermaßen sieht dieses Skript aus:
Hat einer vielleicht eine Idee?
Vielen Dank, schönes Wochenende und schöne Ostern!
Isabel
ich habe folgendes Problem, bei dem ich hoffe, einer von euch kann mir weiterhelfen.
In meinem Datensatz habe ich einmal Temperatur-Daten, sowie Niederschlag und relative Feuchte. Diese würde ich gerne in einem Plot zusammen fassen mit gleicher x-Achse, und unterschiedlichen Y-Achsen
Ich arbeite mit ggplot und weiß, man kann mit facet_grid beispielsweise die Plots horizontal oder vertikal anorden.
Das funktioniert auch mit unterschiedlichen Graphikparametern wie geom_line und geom_bar ganz wunderbar.
Code: Alles auswählen
Test<- read.table("Test-Data.txt",sep="\t", header=T, stringsAsFactors = F,na.strings="NA")
Test_melt<- melt(Test,id=c("Date"))
a<-ggplot(Test_melt,aes(Date,value,group=1))+ facet_grid(variable ~.,scales="free")+
geom_line(data=subset(Test_melt,variable=="Mean"))+
geom_line(data=subset(Test_melt,variable=="rH"))+
geom_bar(stat="identity",data=subset(Test_melt,variable=="PCP"))
a
Folgendermaßen sieht dieses Skript aus:
Code: Alles auswählen
Test$Date <- strptime(Test$Date,"%Y-%m-%d %H:%M:%S")
cols <- c("Mean" ="red", "PCP"="darkblue")
b<-ggplot(Test, aes(x=Date)) +
geom_bar(stat="identity",aes(y=PCP/1,fill="PCP")) +
geom_line(aes(y=Mean , colour="Mean")) +
ylab(" Mean")+
scale_x_datetime(breaks=date_breaks("12 hour"), labels=date_format("%d"))+
scale_fill_manual(values=cols)+
scale_color_manual(values=cols)+
scale_y_continuous(sec.axis=sec_axis(~.*1,name="PCP]"))+
coord_cartesian(ylim = c(0, 25))
b
Vielen Dank, schönes Wochenende und schöne Ostern!
Isabel