pandas.DataFrame.plot.bar

DataFrame.plot.bar(x=None, y=None, **kwargs)[source]

Vertical bar plot.

A bar plot is a plot that presents categorical data with rectangular bars with lengths proportional to the values that they represent. A bar plot shows comparisons among discrete categories. One axis of the plot shows the specific categories being compared, and the other axis represents a measured value.

Parameters
x:label or position, optional

Allows plotting of one column versus another. If not specified, the index of the DataFrame is used.

y:label or position, optional

Allows plotting of one column versus another. If not specified, all numerical columns are used.

color:str, array-like, or dict, optional

The color for each of the DataFrame’s columns. Possible values are:

  • A single color string referred to by name, RGB or RGBA code,

    for instance ‘red’ or ‘#a98d19’.

  • A sequence of color strings referred to by name, RGB or RGBA

    code, which will be used for each column recursively. For instance [‘green’,’yellow’] each column’s bar will be filled in green or yellow, alternatively. If there is only a single column to be plotted, then only the first color from the color list will be used.

  • A dict of the form {column name:color}, so that each column will be

    colored accordingly. For example, if your columns are called a and b, then passing {‘a’: ‘green’, ‘b’: ‘red’} will color bars for column a in green and bars for column b in red.

New in version 1.1.0.

**kwargs

Additional keyword arguments are documented in DataFrame.plot().

Returns
matplotlib.axes.Axes or np.ndarray of them

An ndarray is returned with one matplotlib.axes.Axes per column when subplots=True.

See also

DataFrame.plot.barh

Horizontal bar plot.

DataFrame.plot

Make plots of a DataFrame.

matplotlib.pyplot.bar

Make a bar plot with matplotlib.

Examples

Basic plot.

>>> df = pd.DataFrame({'lab':['A', 'B', 'C'], 'val':[10, 30, 20]})
>>> ax = df.plot.bar(x='lab', y='val', rot=0)
../../_images/pandas-DataFrame-plot-bar-1.png

Plot a whole dataframe to a bar plot. Each column is assigned a distinct color, and each row is nested in a group along the horizontal axis.

>>> speed = [0.1, 17.5, 40, 48, 52, 69, 88]
>>> lifespan = [2, 8, 70, 1.5, 25, 12, 28]
>>> index = ['snail', 'pig', 'elephant',
...          'rabbit', 'giraffe', 'coyote', 'horse']
>>> df = pd.DataFrame({'speed': speed,
...                    'lifespan': lifespan}, index=index)
>>> ax = df.plot.bar(rot=0)
../../_images/pandas-DataFrame-plot-bar-2.png

Plot stacked bar charts for the DataFrame

>>> ax = df.plot.bar(stacked=True)
../../_images/pandas-DataFrame-plot-bar-3.png

Instead of nesting, the figure can be split by column with subplots=True. In this case, a numpy.ndarray of matplotlib.axes.Axes are returned.

>>> axes = df.plot.bar(rot=0, subplots=True)
>>> axes[1].legend(loc=2)  
../../_images/pandas-DataFrame-plot-bar-4.png

If you don’t like the default colours, you can specify how you’d like each column to be colored.

>>> axes = df.plot.bar(
...     rot=0, subplots=True, color={"speed": "red", "lifespan": "green"}
... )
>>> axes[1].legend(loc=2)  
../../_images/pandas-DataFrame-plot-bar-5.png

Plot a single column.

>>> ax = df.plot.bar(y='speed', rot=0)
../../_images/pandas-DataFrame-plot-bar-6.png

Plot only selected categories for the DataFrame.

>>> ax = df.plot.bar(x='lifespan', rot=0)
../../_images/pandas-DataFrame-plot-bar-7.png

© 2008–2021, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.3.4/reference/api/pandas.DataFrame.plot.bar.html