The y-axis corresponds to the direct eigenvalues from your DFT calculation. You need to set the valence band maximum to '0' manually. The DFT output of your calculation will give the highest occupied state energy (or the Fermi energy, if you use occupations smearing). So whatever that energy is, subtract that from the energies in your band plot.
A note on the Fermi energy value outputted in DFT codes: it's only really useful in the case of metals, or when likewise there are occupied states at the Fermi level, such as in heterostructures, slabs etc. In insulators and semiconductors, its position within the band gap depends on the smearing and some other computational factors, and isn't physically meaningful.
When you do align to the Fermi energy (by defining $E_F=0$) in these cases, you should use the value calculated from the scf calculation. Prof. Stefano de Gironcoli answered this question in the Quantum Espresso mailing list (pw_forum):
the ONLY Fermi energy that is meaningful is the one corresponding to a
scf calculation... which is calculated consistently with the
corresponding charge density.
All nscf or band calculations are performed on grids which might give
non-regular sampling of the BZ... you should not use the corresponding
fermi energy .