old_contents: # Copyright (c) 2015,2018,2019 MetPy Developers.
  # Distributed under the terms of the BSD 3-Clause License.
  # SPDX-License-Identifier: BSD-3-Clause
  """
  NEXRAD Level 2 File
  ===================
  
  Use MetPy to read information from a NEXRAD Level 2 (volume) file and plot
  """
  import matplotlib.pyplot as plt
  import numpy as np
  
  from metpy.cbook import get_test_data
  from metpy.io import Level2File
  from metpy.plots import add_metpy_logo, add_timestamp
  
  ###########################################
  
  # Open the file
  name = get_test_data('KTLX20130520_201643_V06.gz', as_file_obj=False)
  f = Level2File(name)
  
  print(f.sweeps[0][0])
  
  ###########################################
  
  # Pull data out of the file
  sweep = 0
  
  # First item in ray is header, which has azimuth angle
  az = np.array([ray[0].az_angle for ray in f.sweeps[sweep]])
  
  # 5th item is a dict mapping a var name (byte string) to a tuple
  # of (header, data array)
  ref_hdr = f.sweeps[sweep][0][4][b'REF'][0]
  ref_range = np.arange(ref_hdr.num_gates) * ref_hdr.gate_width + ref_hdr.first_gate
  ref = np.array([ray[4][b'REF'][1] for ray in f.sweeps[sweep]])
  
  rho_hdr = f.sweeps[sweep][0][4][b'RHO'][0]
  rho_range = (np.arange(rho_hdr.num_gates + 1) - 0.5) * rho_hdr.gate_width + rho_hdr.first_gate
  rho = np.array([ray[4][b'RHO'][1] for ray in f.sweeps[sweep]])
  
  ###########################################
  fig, axes = plt.subplots(1, 2, figsize=(15, 8))
  add_metpy_logo(fig, 190, 85, size='large')
  for var_data, var_range, ax in zip((ref, rho), (ref_range, rho_range), axes):
      # Turn into an array, then mask
      data = np.ma.array(var_data)
      data[np.isnan(data)] = np.ma.masked
  
      # Convert az,range to x,y
      xlocs = var_range * np.sin(np.deg2rad(az[:, np.newaxis]))
      ylocs = var_range * np.cos(np.deg2rad(az[:, np.newaxis]))
  
      # Plot the data
      ax.pcolormesh(xlocs, ylocs, data, cmap='viridis')
      ax.set_aspect('equal', 'datalim')
      ax.set_xlim(-40, 20)
      ax.set_ylim(-30, 30)
      add_timestamp(ax, f.dt, y=0.02, high_contrast=True)
  
  plt.show()
  
new_contents: # Copyright (c) 2015,2018,2019 MetPy Developers.
  # Distributed under the terms of the BSD 3-Clause License.
  # SPDX-License-Identifier: BSD-3-Clause
  """
  NEXRAD Level 2 File
  ===================
  
  Use MetPy to read information from a NEXRAD Level 2 (volume) file and plot
  """
  import matplotlib.pyplot as plt
  import numpy as np
  
  from metpy.cbook import get_test_data
  from metpy.io import Level2File
  from metpy.plots import add_metpy_logo, add_timestamp
  
  ###########################################
  
  # Open the file
  name = get_test_data('KTLX20130520_201643_V06.gz', as_file_obj=False)
  f = Level2File(name)
  
  print(f.sweeps[0][0])
  
  ###########################################
  
  # Pull data out of the file
  sweep = 0
  
  # First item in ray is header, which has azimuth angle
  az = np.array([ray[0].az_angle for ray in f.sweeps[sweep]])
  diff = np.diff(az)
  diff[diff > 180] -= 360.
  diff[diff < -180] += 360.
  avg_spacing = diff.mean()
  az = (az[:-1] + az[1:]) / 2
  az = np.concatenate(([az[0] - avg_spacing], az, [az[-1] + avg_spacing]))
  
  # 5th item is a dict mapping a var name (byte string) to a tuple
  # of (header, data array)
  ref_hdr = f.sweeps[sweep][0][4][b'REF'][0]
  ref_range = (np.arange(ref_hdr.num_gates + 1) - 0.5) * ref_hdr.gate_width + ref_hdr.first_gate
  ref = np.array([ray[4][b'REF'][1] for ray in f.sweeps[sweep]])
  
  rho_hdr = f.sweeps[sweep][0][4][b'RHO'][0]
  rho_range = (np.arange(rho_hdr.num_gates + 1) - 0.5) * rho_hdr.gate_width + rho_hdr.first_gate
  rho = np.array([ray[4][b'RHO'][1] for ray in f.sweeps[sweep]])
  
  ###########################################
  fig, axes = plt.subplots(1, 2, figsize=(15, 8))
  add_metpy_logo(fig, 190, 85, size='large')
  for var_data, var_range, ax in zip((ref, rho), (ref_range, rho_range), axes):
      # Turn into an array, then mask
      data = np.ma.array(var_data)
      data[np.isnan(data)] = np.ma.masked
  
      # Convert az,range to x,y
      xlocs = var_range * np.sin(np.deg2rad(az[:, np.newaxis]))
      ylocs = var_range * np.cos(np.deg2rad(az[:, np.newaxis]))
  
      # Plot the data
      ax.pcolormesh(xlocs, ylocs, data, cmap='viridis')
      ax.set_aspect('equal', 'datalim')
      ax.set_xlim(-40, 20)
      ax.set_ylim(-30, 30)
      add_timestamp(ax, f.dt, y=0.02, high_contrast=True)
  
  plt.show()
  
subject: Fix up call to pcolormesh