Измените последнюю строку на
q + theme(axis.text.x = element_text(angle = 90, hjust = 1))
По умолчанию оси выравниваются по центру текста, даже при повороте. Когда вы поворачиваете +/- 90 градусов, вы обычно хотите, чтобы он был выровнен по краю:
Изображение выше взято из этого сообщения в блоге .