Function to smooth scale a line at certain cutpoints

I have a set of points that range from (0, 300,000) and I want to scale it so it goes from (-1, 2). I can scale it linearly between (-1, 1) as shown below:

enter image description here

What I really want to do, however, is to have the transformation function scale it non-linearly: from (0, 100,000] I'd like it to be a smooth sigmoid-like curve ranging from (-1, 1], and from (100,000, 300,000]) I'd like it to scale like a log curve, going from (1, 2). Something like this:

enter image description here