Would something like this work?A function that works for any symmetric range:
plt[rng_] := Block[{r = 3rng, tcks, f}, f[x_] := Which[x == 1, "+Q", x == -1, "-Q", x > 0, "+" <> ToString[x] <> "Q", x < 0, ToString[x] <> "Q", x == 0, ""]; tcks = Transpose[{Range[-r, r], f /@ Range[-r, r] }]; Plot[Round[n], {n, -r, r}, Ticks -> {tcks, tcks}, AspectRatio -> Automatic, ExclusionsStyle -> Opacity[1], AxesLabel -> {"Input", "Output"}, AxesStyle -> Arrowheads[{-0.0805, 0.0805}]]]], ImageSize -> 300]] plt /@ {3, 5} // Row 


