Quite why I did it this way I don't know. It took hours (probably) to adjust the chart, copy it to paint, save it and then copy it as a layer to GIMP.
I've since discovered a few websites detailing how to create exactly the same thing using R. Googling 'animated gif R' gives, almost, thousands of examples. I now realise quite how stupid I was.
Below is the script that I used:
-------------------------------------------------------------------------------
death <- read.table("death.txt",header=TRUE)
#summary(death)
library(ggplot2)
library(Cairo)
for(i in 2:49){
dp <- ggplot(data=death,aes(x=Age,y=death[,i])) + geom_line() + ylim(0,0.05)
if(i<10){
ttle <- paste('plot0',i,'.png',sep="")
} else {
ttle <- paste('plot',i,'.png',sep="")
}
CairoPNG(filename=ttle,width=480,height=480,dpi=300)
#png(filename=ttle)
print(dp)
dev.off()
}
shell('"C:/Program Files/GraphicsMagick/gm.exe" convert -delay 15 -loop 0 plot*.png death.gif')
shell('"C:/Program Files/FFMpeg/bin/ffmpeg.exe" -start_number 02 -i plot%02d.png -vcodec libx264 death.mp4')
-------------------------------------------------------------------------------
The script loads in the data which is arranged as a table with age as the rows, year as the columns and deaths as a proportion of the total.
It then loads the required libraries.
Lines 7-20 do the work of creating the plots. These are saved as PNG files. Two things to note:
- I've set the y axis scale to run from 0->0.05. This is to keep the axes on a consistent scale.
- To make sure that the PNG files are ordered correctly I've had to zero pad the numbers for 2-9.
The work of creating the animated GIF is done by GraphicMagick. You can also use ImageMagick.
I won't go into any more detail as other sites give much better information. There's no point copying it.
The last line uses ffmeg to create a movie from the plots. This was inspired by www.animatedgraphs.co.uk.
Below is the resultant GIF:
The whole process takes seconds - once the script is written.
No comments:
Post a Comment