pandas.DataFrame.plot.bar

DataFrame.plot.bar(self, 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.

**kwds

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

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)  # doctest: +SKIP
../../_images/pandas-DataFrame-plot-bar-3.png

Plot a single column.

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

Plot only selected categories for the DataFrame.

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