One more thing -
When you run the code *without* coord_polar, it works sometimes but not always:
d <- data.frame(x=runif(50, 0, 360), y=runif(50, 1, 10))
ggplot(d, aes(x, y)) + geom_path() +
scale_x_continuous(breaks=c(0, 90, 180), labels=c("a", "b", "c"))
I think this is because with coord_cartesian (the default), the x limits are expanded (with the expand parameter); sometimes the random data will be close enough to zero that the expansion includes 0; sometimes not.
With coord_polar, there is by default no expansion of the x/theta limits, because it would make things look strange. This is why some data works with coord_cartesian, but not with coord_polar.
This expansion behavior is new, but it unfortunately isn't well documented at this point.
-Winston