title: Bokeh initial x axis zoom range and allow full zoom out on x axis with y_range bound
body: <p>With the following I can set an initial x axis zoom range of the last 4 hours. Ideally I wish to use the wheel zoom to scroll out on the x axis only and view the whole plot but remain bound on the y axis by the range set. The following does not allow this and setting either of the following also does not:</p>
  <pre><code>y_range=DataRange1d(0, y_max, bounds=&quot;auto&quot;)
  y_range=DataRange1d(0, y_max) # i.e. bounds=None as per docs
  </code></pre>
  <p>Can anyone assist in how I can allow an initial view on the x axis, allow zoom out on the x axis, but set bounds on the y axis such that the user cannot zoom out beyond the plot boundaries of min y=0 and (in the example) max y=8?</p>
  <p>Example code with bounds statically set on y axis as per docs <a href="https://docs.bokeh.org/en/latest/docs/reference/models/ranges.html#bokeh.models.ranges.DataRange1d.bounds" rel="nofollow noreferrer">here</a>:</p>
  <pre><code>import pandas as pandas
  from bokeh.plotting import figure, output_file, show
  from bokeh.models import ColumnDataSource, DataRange1d, Range1d
  
  output_file('stackoverflowq.html')
  
  list1 = [['2020-12-03 09:20:03.175453','5'],['2020-12-04 09:20:03.175453','7'],['2020-12-05 09:20:03.175453','3'],['2020-12-05 09:30:03.175453','4'],['2020-12-05 09:40:03.175453','5'],['2020-12-05 09:50:03.175453','6'],['2020-12-05 10:00:03.175453','4'],['2020-12-05 10:10:03.175453','1'],['2020-12-05 10:20:03.175453','2'],['2020-12-05 10:30:03.175453','8'],['2020-12-05 10:40:03.175453','2'],['2021-01-03 09:20:03.175453','5'],['2021-01-04 09:20:03.175453','7'],['2021-01-05 09:20:03.175453','3'],['2021-01-20 09:30:03.175453','4'],['2021-01-21 01:40:03.175453','5'],['2021-01-21 02:50:03.175453','6'],['2021-01-21 06:00:03.175453','4'],['2021-01-21 07:10:03.175453','1'],['2021-01-21 08:20:03.175453','2'],['2021-01-21 09:30:03.175453','8'],['2021-01-21 10:40:03.175453','2']]
  
  cols = ['DateTime','vals']
  df = pandas.DataFrame(list1,columns=cols)
  df['DateTime'] = pandas.to_datetime(df['DateTime'])
  df = df.set_index('DateTime')
  
  y_max = int(df.vals.unique().max())*1.2
  
  x_max = df.index.unique().max()
  x_min = x_max - pandas.Timedelta('4h')
  
  p = figure(x_axis_type=&quot;datetime&quot;, y_range=DataRange1d(0, y_max, bounds=(0, y_max)), x_range=(x_min, x_max))
  
  p.line(x='DateTime', y='vals', color='blue', source=df)
  
  p.xaxis.axis_label = 'Date Time'
  p.yaxis.axis_label = 'vals'
  
  show(p)
  </code></pre>