The general pattern for changing the range and offset of an EventExpression is:

!EventValue01 * !Range + !Offset

In terms of min and max, this would be:

!EventValue01 * (!Max - !Min) + !Min

There are lots of ways to generate nonlinear controls, but one of the most explicit ways is to create a warping function using an into: array. In other words, create a mapping of input-to-output values expressed as points and put them in an Array. Then use your linear function as the input to that mapping. For example:

!EventValue01 into: #({0 @ 0}{0.25 @ 0.0625}{0.5 @ 0.25}{0.75 @ 0.5625} {1 @ 1})

would have an output value of 0.5625 when its input value (the value of your fader or expression) was 0.75. Values in between the points will be linearly interpolated according to how close the input value is to the one of the specified points. In this example, you could get the same effect using:

!EventValue01 squared

and of course you can still do arithmetic on the results to change the min and max, for example

!EventValue01 squared * (!Max - !Min) + !Min

When you are experimenting with different functions and would like to visualize the result, select the expression in the parameter field and use Shift+Ctrl+Y to evaluate that expression and see how it looks on an oscilloscope. You may have better luck visualizing it by using repeatingRamp: rather than a one-shot ramp:.

If you are scaling an EventValue, you can Ctrl+Click on its widget in the VCS to change its min, max, and grid, and you can unlock the VCS to change that widget to use a log, rather than linear, scale.