code: def geom_segment(
      mapping=None,
      *,
      data=None,
      stat=None,
      position=None,
      show_legend=None,
      sampling=None,
      tooltips=None,
      arrow=None,
      flat=None,
      geodesic=None,
      color_by=None,
      **other_args,
  ):
      """
      Draw a straight line segment between two points.
  
      Parameters
      ----------
      mapping : `FeatureSpec`
          Set of aesthetic mappings created by `aes()` function.
          Aesthetic mappings describe the way that variables in the data are
          mapped to plot "aesthetics".
      data : dict or Pandas or Polars `DataFrame`
          The data to be displayed in this layer. If None, the default, the data
          is inherited from the plot data as specified in the call to ggplot.
      stat : str, default='identity'
          The statistical transformation to use on the data for this layer, as a string.
          Supported transformations: 'identity' (leaves the data unchanged),
          'count' (counts number of points with same x-axis coordinate),
          'bin' (counts number of points with x-axis coordinate in the same bin),
          'smooth' (performs smoothing - linear default),
          'density' (computes and draws kernel density estimate).
      position : str or `FeatureSpec`, default='identity'
          Position adjustment, either as a string ('identity', 'stack', 'dodge', ...),
          or the result of a call to a position adjustment function.
      show_legend : bool, default=True
          False - do not show legend for this layer.
      sampling : `FeatureSpec`
          Result of the call to the `sampling_xxx()` function.
          To prevent any sampling for this layer pass value "none" (string "none").
      tooltips : `layer_tooltips`
          Result of the call to the `layer_tooltips()` function.
          Specify appearance, style and content.
      arrow : `FeatureSpec`
          Specification for arrow head, as created by `arrow()` function.
      flat : bool, default=False.
          True - keep a line straight (corresponding to a loxodrome in case of Mercator projection).
          False - allow a line to be reprojected, so it can become a curve.
      geodesic : bool, default=False
          Draw geodesic. Coordinates expected to be in WGS84. Works only with `geom_livemap()`.
      color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
          Define the color aesthetic for the geometry.
      other_args
          Other arguments passed on to the layer.
          These are often aesthetics settings used to set an aesthetic to a fixed value,
          like color='red', fill='blue', size=3 or shape=21.
          They may also be parameters to the paired geom/stat.
  
      Returns
      -------
      `LayerSpec`
          Geom object specification.
  
      Notes
      -----
      `geom_segment()` draws segments.
  
      `geom_segment()` understands the following aesthetics mappings:
  
      - x : x-axis value.
      - y : y-axis value.
      - xend : x-axis value.
      - yend : y-axis value.
      - alpha : transparency level of a layer. Accept values between 0 and 1.
      - color (colour) : color of the geometry lines. String in the following formats: RGB/RGBA (e.g. "rgb(0, 0, 255)"); HEX (e.g. "#0000FF"); color name (e.g. "red"); role name ("pen", "paper" or "brush").
      - size : line width.
      - linetype : type of the line. Codes and names: 0 = 'blank', 1 = 'solid', 2 = 'dashed', 3 = 'dotted', 4 = 'dotdash', 5 = 'longdash', 6 = 'twodash'.
  
      Examples
      --------
      .. jupyter-execute::
          :linenos:
          :emphasize-lines: 3
  
          from lets_plot import *
          LetsPlot.setup_html()
          ggplot() + geom_segment(x=0, y=0, xend=1, yend=1)
  
      |
  
      .. jupyter-execute::
          :linenos:
          :emphasize-lines: 11-12
  
          import numpy as np
          from lets_plot import *
          LetsPlot.setup_html()
          T = 25
          np.random.seed(42)
          t = [0, *np.random.normal(size=T)]
          x = np.cumsum(np.cos(t))
          y = np.cumsum(np.sin(t))
          data = {'x': x[:-1], 'y': y[:-1], 'xend': x[1:], 'yend': y[1:]}
          ggplot(data, aes(x='x', y='y')) + \\
              geom_segment(aes(xend='xend', yend='yend', color='xend'), \\
                           arrow=arrow(type='closed', angle=10)) + \\
              scale_color_gradient(low='#2c7bb6', high='#d7191c') + \\
              coord_fixed()
  
      |
  
      .. jupyter-execute::
          :linenos:
          :emphasize-lines: 18-20
  
          from lets_plot import *
          LetsPlot.setup_html()
          pushkin_1829_journey = {
              "dep_city": ["Moscow", "Oryol", "Novocherkassk", "Stavropol", \\
                           "Georgiyevsk", "Vladikavkaz", "Tiflis", "Kars"],
              "arr_city": ["Oryol", "Novocherkassk", "Stavropol", "Georgiyevsk", \\
                           "Vladikavkaz", "Tiflis", "Kars", "Erzurum"],
              "dep_lon": [37.618423, 36.098689, 40.110401, 41.9734, \\
                          43.4577689, 44.66778, 44.783333, 43.09495],
              "arr_lon": [36.098689, 40.110401, 41.9734, 43.4577689, \\
                          44.66778, 44.783333, 43.09495, 41.27694],
              "dep_lat": [55.751244, 52.929697, 47.414101, 45.0428, \\
                          44.1497667, 43.03667, 41.716667, 40.60199],
              "arr_lat": [52.929697, 47.414101, 45.0428, 44.1497667, \\
                          43.03667, 41.716667, 40.60199, 39.90861],
          }
          ggplot(pushkin_1829_journey) + geom_livemap(const_size_zoomin=0) + \\
              geom_segment(aes(x="dep_lon", y="dep_lat", xend="arr_lon", yend="arr_lat"), \\
                           size=1, color="#fc4e2a", arrow=arrow(), \\
                           tooltips=layer_tooltips().line("from @dep_city to @arr_city"))
  
      """
      return _geom(
          "segment",
          mapping=mapping,
          data=data,
          stat=stat,
          position=position,
          show_legend=show_legend,
          sampling=sampling,
          tooltips=tooltips,
          arrow=arrow,
          flat=flat,
          geodesic=geodesic,
          color_by=color_by,
          **other_args,
      )
  
imports: from lets_plot.geo_data_internals.utils import is_geocoder
  from .core import FeatureSpec, LayerSpec
  from .util import as_annotated_data, is_geo_data_frame, geo_data_frame_to_crs, get_geo_data_frame_meta
label_desc: Use image node_id 39 for calling a global function with example usage: geom_segment(mapping) and returns: _geom