You can also direclty specify the breaks in a function. Below are a few examples of how you could do this. Also look at the breaks argument in ?discrete_scale
.
chart + scale_y_discrete(breaks=function(n) c(0, floor(max(n)/2), max(n)))
chart + scale_y_discrete(breaks=function(n) n[floor(length(n)/5)*1:5+1])
chart + scale_y_discrete(breaks=function(n) 10^(ceiling(log10(max(n)))-1)*2*0:5)