Create a numerical value for your months:
x$MonthNum <- sapply(x$Month, function(x) which(x==month.name))
Then draw these numerical values, but label the axes with words.
plot(NA, xaxt="n", xlab="Month", xlim=c(0,13), ylim=c(.96*min(x$Value),1.04*max(x$Value)), type="l") z <- sapply(1996:1998, function(y) with(x[x$Year==y,], lines(MonthNum, Value1))) axis(1, at=1:12, labels=month.name)
And some shortcuts if you want to define years:
xlabpos <- tapply(x$MonthNum, x$Year, max) ylabpos <- mapply(function(mon, year) x$Value1[x$MonthNum==mon & x$Year==year], xlabpos, dimnames(xlabpos)[[1]]) text(x=xlabpos+.5, y=ylabpos, labels=dimnames(xlabpos)[[1]])

You can also get something similar to the ggplot example using layout :
par(mar=c(2,4,1,1)) layout(matrix(1:3)) z <- sapply(1996:1998, function(y) { with(x[x$Year==y,], plot(Value1 ~ MonthNum, xaxt="n", xlab="Month", ylab=y, xlim=c(0,13), ylim=c(.96*min(x$Value),1.04*max(x$Value)), type="l")) axis(1, at=1:12, labels=month.name) })
