.. _userguide:

User guide
##########

.. toctree::
    :maxdepth: 2
    :hidden:

    user_guide/concepts
    user_guide/plotting
    user_guide/data
    user_guide/layout
    user_guide/categorical
    user_guide/graph
    user_guide/geo
    user_guide/tools
    user_guide/styling
    user_guide/annotations
    user_guide/interaction
    user_guide/server
    user_guide/jupyter
    user_guide/export
    user_guide/embed
    user_guide/cli
    user_guide/extensions
    user_guide/webgl
    user_guide/compat
    user_guide/bokehjs

In this user guide, you will find detailed descriptions and examples that
describe many common tasks that you can accomplish with Bokeh. To get started
with Bokeh, you should first completed the steps described in
:ref:`first_steps_installing`.

.. tip::
    See the :ref:`first_steps_overview` for quick tutorials that walk you
    through Bokeh's basic functionalities and concepts. This is the easiest
    and quickest way to get going with Bokeh.

This user guide is arranged by topic:

:ref:`userguide_concepts`
    Learn important foundational concepts about how Bokeh is organized.

:ref:`userguide_plotting`
    Make different kinds of plots using the simple but flexible glyph
    methods from the |bokeh.plotting| interface.

:ref:`userguide_data`
    Provide data or subsets of data for plots and tables and share data
    between plots.

:ref:`userguide_layout`
    Combine multiple plots and widgets into specified layouts.

:ref:`userguide_categorical`
    Handle categorical data with a variety of different techniques such
    as bar charts, categorical heatmaps, visual dodging, and jitter.

:ref:`userguide_graph`
    Create network graph visualizations with configurable node and edge interactions.

:ref:`userguide_geo`
    Working with geographical data---Google Maps, GeoJSON, Tile Rendering.

:ref:`userguide_tools`
    Make interactive tools (like pan, zoom, select, and others) available
    on your plots.

:ref:`userguide_styling`
    Customize every visual aspect of Bokeh plots---axes, grids, labels,
    glyphs, and more.

:ref:`userguide_annotations`
    Add informational annotations, such as labels, arrows, and legends to
    plots.

:ref:`userguide_interaction`
    Create more sophisticated interactions including widgets or linked
    panning and selection.

:ref:`userguide_server`
    Deploy the Bokeh Server to build and publish sophisticated data
    applications.

:ref:`userguide_jupyter`
    Integrate with the Jupyter ecosystem.

:ref:`userguide_export`
    Learn how to export Bokeh layouts as PNGs and SVGs.

:ref:`userguide_embed`
    Embed static or server-based Bokeh plots and widgets into HTML documents
    in a variety of ways.

:ref:`userguide_cli`
    Use Bokeh's capabilities from the command line with the ``bokeh``
    command.

:ref:`userguide_extensions`
    Add new capability to Bokeh with custom user extensions.

:ref:`userguide_webgl`
    Improve performance for large datasets by using WebGL.

:ref:`userguide_compat`
    Use Bokeh together with libraries such as `Datashader`_ and  `HoloViews`_.

:ref:`userguide_bokehjs`
    Create plots in JavaScript by using BokehJS directly.

The user guide contains a lot of examples. They are as minimal as possible and
usually focus on highlighting one functionality or concept each. You can copy
and paste those examples into your own development environment. With only a
handful of exceptions, you will need no external libraries to run the examples.

.. |bokeh.plotting| replace:: :ref:`bokeh.plotting <bokeh.plotting>`

.. _Datashader: http://datashader.readthedocs.io
.. _HoloViews: http://holoviews.org
