set table to the rescue!
Note that I typed all of this into the interactive prompt and copy/pasted my terminal contents.  As such, my commands that follow are prefixed by a gnuplot> which you won't include in your script :-)
First, I generate some data using python ...
import numpy as np
np.savetxt('foobar.txt',np.random.random(1000))
That wasn't hard.  Now time to set up gnuplot functions/constants:
gnuplot> binwidth = 0.05
gnuplot> bin(x,width)=width*floor(x/width)
gnuplot> plot 'foobar.txt' using (bin($1,binwidth)):(1.0) smooth freq with boxes 
Ok, it works with non-logscale data.  That's good.  Lets write that data into a separate file using set table
gnuplot> set table 'foobar.table'
gnuplot> plot 'foobar.txt' using (bin($1,binwidth)):(1.0) smooth freq with boxes
gnuplot> unset table
Now I look at the data gnuplot wrote out to see what's there.
gnuplot> !head foobar.table
# Curve 0 of 1, 21 points
# Curve title: "'foobar.txt' using (bin($1,binwidth)):(1.0)"
# x y xlow xhigh type
 0  40  0  0  i
 0.05  57  0.05  0.05  i
 0.1  52  0.1  0.1  i
 0.15  56  0.15  0.15  i
 0.2  49  0.2  0.2  i
 0.25  55  0.25  0.25  i
Unfortunately, it looks like xlow and xhigh are always the same (possible bug?).  But that's Ok, we're using a constant binwidth anyway.  We'll just use that as the width.
gnuplot> set logscale y
gnuplot> plot 'foobar.table' u 1:2:(binwidth) w boxes
I should note that I've been a little loose with my box positions.  To really get it right, you probably need to shift the center of the boxes to the right by half a binwidth:
gnuplot> plot 'foobar.table' u ($1+0.5*binwidth):2:(binwidth) w boxes