October 13, 2024

How to Make an Area Plot in Python Using Bokeh

An area plot is a type of chart where the area between the line and the x-axis is filled with color. It is useful for visualizing cumulative data and trends over time. In this tutorial, we’ll use the Bokeh library to create an area plot in Python.

1. Install Bokeh

First, make sure you have Bokeh installed. If not, you can install it using pip:

pip install bokeh

2. Import Required Modules

Import the necessary modules from Bokeh:

from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import ColumnDataSource

3. Prepare Data

Prepare the data you want to visualize. In this example, we’ll use some sample data for demonstration:

# Sample data
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

4. Create a Bokeh Plot

Initialize a Bokeh plot and add the area glyph:

# Prepare the output to display in a notebook
output_notebook()

# Create a Bokeh figure
p = figure(title="Area Plot Example", x_axis_label='X', y_axis_label='Y', plot_width=800, plot_height=400)

# Add an area plot to the figure
p.varea(x=x, y1=[0]*len(x), y2=y, fill_color="skyblue", fill_alpha=0.4, line_color=None)

# Optionally add a line plot on top of the area plot
p.line(x=x, y=y, line_color="blue", line_width=2)

# Show the plot
show(p)

5. Explanation

  • Output to Notebook: output_notebook() is used to display the plot inline in Jupyter notebooks.
  • Figure Creation: figure() initializes the plot with titles and axis labels.
  • Area Plot: varea() creates a vertical area plot. x specifies the x-axis data, y1 is the lower bound of the area (set to 0 here), and y2 is the upper bound. fill_color sets the color of the filled area, and fill_alpha sets the transparency.
  • Line Plot: line() adds a line plot on top of the area plot for better visualization of the trend.

6. Customizations

You can customize the area plot by changing colors, adding grid lines, or adjusting transparency. Here are a few customization options:

# Customizations
p.varea(x=x, y1=[0]*len(x), y2=y, fill_color="lightgreen", fill_alpha=0.6, line_color="green")
p.title.text_font_size = '16pt'
p.xaxis.axis_label_standoff = 12
p.yaxis.axis_label_standoff = 12

7. Summary

Using Bokeh, you can easily create an area plot to visualize data trends and cumulative values. By customizing the appearance and adding additional elements like lines, you can create informative and visually appealing plots for your data analysis needs.