The easiest way to achieve what you ask, with automatic limits and breaks, and without side-effects is this:
library(ggplot2)
library(MASS)
library(scales)
ggplot(data=subset(movies, votes > 1000)) +
aes(x = rating, y = votes / 10000) +
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x, n=3),
labels = trans_format("log10")) +
geom_point()
I rather prefer to use superscripts for the powers of ten, and hide the minor grid,
and add ticks spaced according to logs. This is also rather easy to achieve:
ggplot(data=subset(movies, votes > 1000)) +
aes(x = rating, y = votes / 10000) +
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x, n=3),
labels = trans_format("log10", math_format(10^.x))) +
theme(panel.grid.minor = element_blank()) +
annotation_logticks(sides="l") +
geom_point()
The code above is adapted from the examples in the annotation_logticks help, annotation_logticks. There is a lot of flexibilty for adjusting the exact format.