Problems with twinx and semilogy

I'm trying to replicate a plot like this:

In this case, the y-axis on the left (the black dots) is linear
(thought the values are logged) and the y-axis on the right (red data)
is log base 2.

I'm running into some problems.

1. How do I display the right-hand y-axis so that is includes the
range above 32 and below 0? When I try to include 0 or below in the
axis range, I get an error. When I do auto, it ranged from 2 to 32.

2. How do I line up the centers of both axes. in this case, the y-axis
on the left needs to have the 0 value lined up with the value of 2 on
the y axis on the right.

3. I can't get matplotlib to make such small dots (like the black dots
in this figure). Is that possible?

Thanks for the advice.