code: def geocode_states(names=None) -> NamesGeocoder:
      """
      Create a `NamesGeocoder` object for states. Allow to refine ambiguous request with
      `where()` method, with a scope that limits area of geocoding or with parents.
  
      Parameters
      ----------
      names : str or list
          Names of objects to be geocoded.
  
      Returns
      -------
      `NamesGeocoder`
          Geocoder object specification.
  
      Examples
      --------
      .. jupyter-execute::
          :linenos:
          :emphasize-lines: 5
  
          from IPython.display import display
          from lets_plot import *
          from lets_plot.geo_data import *
          LetsPlot.setup_html()
          states = geocode_states().scope('UK').get_boundaries()
          display(states)
          ggplot() + \\
              geom_map(aes(fill='found name'), data=states, color='white') + \\
              ggtitle('UK States')
  
      """
      return NamesGeocoder("state", names)
  
file_path: lets-plot/python-package/lets_plot/geo_data/core.py
imports: from typing import Any
  import numpy
  from .geocoder import Geocoder, ReverseGeocoder, NamesGeocoder
label_desc: Use image node_id 4 for calling a global function with example usage: geocode_states(names) and returns: NamesGeocoder