Putting scale bar labels below scale bar in QGIS?

I don't think there's an option yet which allows you to put the units below the scalebar. An alternative could be to:

  1. Modify your current scalebar and set its Font colour to match the background colour:

    Item Properties > Fonts and colours > Font colour
    
  2. Copy your scalebar and paste it directly below your original scalebar. Then set its Font colour to black and its Line colour to transparent:

    Item Properties > Fonts and colours > Font colour
                                        > Line colour
    
  3. You can then select your scalebars and group them, allowing you to move them easily as if they were one:

    Scalebars


I don't think it is possible within qgis print composer.

However you can play with a template file to make it work. You can set the distance between the text labels and the scale bar in:

Item properties > Display > Labels margin.

Unfortunately you can't set it to a negative value (= scale bar above the text) within the print composer.

But you can within a template file. Create an empty print composition and within it a scale bar, with the right style etc. Save this as template ("Composer > Save as template"). This will create a *.qpt file. Open this file with a text editor and search for the term "labelBarSpace" and set it to a negative value e.g. -10. (Depending on you font size you'll have to adjust this value.) Within the qgis print composer add this template (Composer > Add Items from Template) and it'll show the numbers below the scale bar.

As long as you don't touch the Item properties > Display > Labels margin - settings it will stay this way. This worked for me with QGIS 2.18.